Skip to main content

Full text of "Second West Coast Computer Faire Conference Proceedings"

See other formats


SECOND 




CONFERENCE PROCEEDINGS 



Jim C. Warren, Jr., Editor 



March 3-4-5, 1978 San Jose, California. 



^MICROCOMPUTERS^ K 




Available for immediate delivery 



CONFERENCE PROCEEDINGS 

of the largest convention ever held 

Exclusively Devoted to Home & Hobby Computing 
over 300 pages of conference papers, including: 

(Topic headings with approximate count of 7"xl0" pages) 



Friday & Saturday Banquet Speeches (16) 

Tutorials f<>r -the -Computer Novice- (-1-4-) 

People & Computers (13) 

Human Aspects of System Design (9) 

Computers for Physically Disabled (7) 

Legal Aspects of Personal Computing (6) 

Heretical Proposals (11) 

Computer Art Systems (2) 

Music & Computers (43) 

Electronic Mail (8) 

Computer Networking for Everyone (14) 

Personal Computers for Education (38) 

Residential Energy & Computers (2) 

Systems for Very Small Businesses (5) 



Entrepreneurs (6) 
Speech -Recognition & 

Speech Synthesis by Computer (14) 
Tutorials on Software Systems Design (11) 
Implementation of 

Software Systems and Modules (10) 
High-Level Languages for Home Computers (15) 
Multi- Tasking on Home Computers (10) 
Homebrew Hardware (8) 
Bus & Interface Standards (17) 
Microprogrammable Microprocessors 

for Hobbyists (18) 
Amateur Radio & Computers (11) 
Commercial Hardware (8) 



plus 

Names & addresses of the 170+ exhibitors at the Computer Faire 



Order mow from: 

Computer Faire 

Box 1579 

Palo Alto C A 94302 

(415)851-7664 



Proceedings: 
Shipping & Handling: 
Outside California: 



$1 2.00 

J38 

$12.68 



Californians Add: 
foside California: 



.72 



($1 1.95, plus a nickel, if you prefer) 

(Write for shipping charges ouside U.S.A.) 

Payment must accompany the order. 



$13.40 



6% Sales Tax 

Payment must accompany the order. 



An 8%" x 11" Softbound Book 



O77-1-10 by Computer Faire BOX 1579, PALO ALTO CA 94302 oOo (415) 851-7664 



CONFERENCE PROCEEDINGS 



Jim C. Warren, Jr., Editor 



THE SECOND WEST COAST COMPUTER FAIRE 
held in 
The San Jose Convention Center 
in 
San Jose, California 

March 3-5, 1978 



COMPUTER FAIRE 

Box 1579 
Palo Alto CA 94302 

(415)851-7075 



^) Computer Faire, Inc. 1978 



all rights reserved 
printed in the U.S.A. 

ISBN 0-930418-01-X 

Library of Congress Catalog card # 78-53026 



These Proceedings were made available, on-site, at the Second West Coast Computer Faire 
because of the heroic efforts of Marc Kindree, Nancy Hamilton, Dave Brown, Gary Markesen, 
and the other humble super-humans working at Nowels Publications, Menlo Park, California; 
because of the super-human efforts of Mort Levine, Gil Anderson, Shirley Boggs, Chris Yanke, 
Ivftte Dawson, John Scroggs, and the other humble heroes working at Suburban Newspaper 
Publications, Cupertino, California; because of the humbling efforts of Toby Forshee of 
Redwood Trade Bindery, Redwood City, California; and, of course, Bill Baumann, Finally, 
the Proceedings could have seen the light of night without the aid of Deft Malloy, and, 
in fact, often did. 



PREFACE 

As a widespread movement, "personal computing" began around January of 1975. It 
began as a hobby activity, involving only the dedicated computer hacker and elektroniker 
who had the time, talent, and patience to deal with the relatively sophisticated elec- 
tronics that was available only in kit form, with ~ at most -- minimal documentation, 
and virtually no software. 

Within less than three years, we saw the entry into the marketplace of several fully 
assembled, ready-to-use microcomputers, priced as consumer products for the interested 
technocrat. In noticeably less time than that, we saw the availability of a variety of 
usable — though certainly limited-capability — systems software. 

That is, by 1977, personal computing had moved beyond the dedicated computer hobbyist 
and was beginning to be accessible to the intelligent, logically-oriented novice. 

Now — March, 1978 — we are seeing the first signs of true "computer power for the 
people", as I believe these Conference Proceedings of the Second West Coast Computer Faire 
illustrate . 

In the First West Coast Computer Faire, that took place in April, 1977, we had 
slightly over a day of Conference activities regarding very-low-cost computers in educa- 
tion. This Second Faire has over two days of Conference sessions devoted to the topic. 

Last year, we had two talks concerning the topic that is perhaps the ultimately 
"personal" application of computers — computers for the physically disabled. This year, 
we have a full day of sessions addressing this topic, including demonstrations of several 
operational devices. Additionally, the commercial exhibits include several such demon- 
strations of prototype aids for the physically handicapped. 

In the 1977 Faire, a Conference section addressed the potential of networking per- 
sonal computers. This 1978 Faire — less than a year later — includes details of the 
protocols, and demonstrations of a functioning personal computing network facility. 

Last year, there were few talks concerning the entrepreneur wishing to explore this 
new marketplace, and only one talk addressing microcomputing applications in business. 
This year, half-day sessions address each of these topics, presenting both ideas and the 
results of experience in these areas. 

Though there have been something in the order of 30 other conventions addressing 
the topic of home and hobby computing, to date, the Computer Faire remains unique in the 
fact that it publishes the abstracts and full-text papers of most of the Faire speakers. 
We set this as a major commitment when we created the first Faire; we are continuing that 
commitment for the second Faire. These Proceedings are the result. 

The papers herein were — at most — minimally refereed. As was true of the papers 
in the first Proceedings, they exhibit a wide range in quality. However, they also 
exhibit a timeliness that we feel is essential in a technical area moving as rapidly as 
personal computing is — a timeliness that looks askance at the year-and-more turn-around 
time for obtaining publication in the many heavily-refereed, academically acceptable 
publications. Additionally, these Proceedings illustrate the viewpoint that one need not 
be "academically acceptable" to do interesting and challenging experimentation. They 
also illustrate the view that "novice" is a relative term, and that "state of the art 

I has many dimensions. 

I Jim C. Warren, Jr. 

I Woodside, California 

I 78 February 18 




JIM WARREN, Faire Chairperson 

345 Swett Road 

Woodside, California 94062 
& 
Editor, Dr. Dobb's Journal of Computer 

Calisthenics & Orthodontia 

People * s Computer Company 

Box E 

Menlo Park, California 94025 





ROBERT REILING, Faire Operations Coordinator 

& 

Editor, Homebrew Computer Club Newsletter 

Homebrew Computer Club 

Box 626 

Mountain View, California 94042 



RICK BAKALINSKY, designer 

Box 933 

Menlo Park CA 94025 
& 
willing co-pilot for flights of fancy 

1055 Pine 3, Sweet 1 

Menlo Park CA 94025 



TABLE OF CONTENTS 

Preface, Jim C. Warren, Jr ~ 

Computer Faire Organizers ^ 

Table of Contents -* 

BANQUET PRESENTATIONS 

Don't Settle for Anything Less (biographical sketch), Alan Kay 9 

Significant Personal Computing Events for 1978, Adam Osborne ]0 

Dinky Computers Are Changing Our Lives, Portia Isaacson '•> 

AN INTRODUCTION FOR THE ABSOLUTE NOVICE 

Beginner's Guide To Computer Jargon, John T. Shen .... • • • • • • • • • • • • • • • • • • • ;; • • • ; • ; ; * 

Everything You Never Wanted To Ask About Computers Because You Didn't Think You d Understand It Anyway, Ur 

A Talk For People Who Got Talked Into Coming Here By Someone Else, Jo Murray lj 

Introduction to Personal Computing, A Beginners Approach, Robert Moody 24 

COMPUTERS FOR THE PHYSICALLY DISABLED 

Electronics for the Handicapped (brief abstract), Robert Suding * ' 

Microcomputer Communication for the Handicapped, Tim Scully • . . . • • • • : - J* 

Speech Recognition as an Aid To The Handicapped (brief abstract), Horace Enea and John Reykjalin ^ 

COMPUTERS FOR THE VISUALLY HANDICAPPED 



44 



Microprocessors in Aids For The Blind, Roberts. Jaqujssjr. . . ^-^ ^__„ _ A AIU _ D A|den 47 

58 
65 

Microcomputer-Based Sensory Aids For The Handicapped, J.S.Brugler 70 



Blind Mobility Studies With A Microcomputer, Carter C. Collins, William R. O'Connor and Albert B. 

The Design of A Voice Output Adapter For Computer, William F. Jolitz . . . . • £° 

Development of Prototype Equipment To Enable The Blind To Be Telephone Operators, Susan Halle Phillips w 



The Design of A Voice Output AdapterFor Computer,JVilliam F. Jolitz 
Development of Prototype Eqi ' "" n " JT " T "' " 

Microcomputer-Based Sensory 

EXOTIC COMPUTER GAMES 



73 
Ambitious Games For Small Computers, Larry Tesler. /J 



Epic Computer Games: Some Speculations, Dennis R. Allison and Lee Hoevel »• V J i/ 1/ u 7fi 

Create Your Own (Computer) Game, An Experience in Synectic Synergistic Serendipity (abstract), Ted M. Kahn /» 

Psychological Tests With Video Games, Sam Hersh and Al Ahumada /y 



COMPUTERS IN THE ARTS 

Computer Art and Art Related Applications in Computer Graphics: A Historical Perspective and Projected Possibilities, 

Beverly J. Jones 81 

Microprocessor Controlled Synthesizer, Caesar Castro and Allen Heaberlin 85 

Designing Your Own Real-Time Tools, A Microprocessor-Based Stereo Audio Spectrum Analyzer for Recording Studios, 
Electronic Music, And Speech Recognition, Byron D. Wagner 96 

LEGAL ASPECTS OF HOME COMPUTERS 

Personal Computing and the Patent System, David B. Harrison 105 

Copyright and Software: Some Philosophical and Practical Considerations, Kenneth S. Widelitz 115 

WRITING ABOUT COMPUTERS 

Becoming A Successful Writer About Computers, Ted Lewis 117 

Writing A User's Guide, Douglas j. Mecham 119 

Editing and Publishing A Club Newsletter, Richard J. Nelson 125 

COMPUTER ESOTERICA 

Deus Ex Machina, or, The True Computerist, Tom Pittman 132 

Peoples' Capitalism: The Economics of the Robot Revolution, James S. Albus 135 

Thoughts on the Prospects for Automated Intelligence, Dennis Reinhardt 140 

Brain Modeling and Robot Control Systems, James S. Albus 144 

COMMUNICATIONS NETWORKS & PERSONAL COMPUTERS 

A Peek Behind the PCNET Design, Mike Wilber 153 

Communication Protocols for a Personal Computer Network, Ron Crane 156 

PCNET Protocol Tutorial, Robert Elton Maas 159 

PUBLIC-ACCESS COMPUTER CENTERS 

Micro's In The Museum: A Realizable Fantasy, Disneyland On Your Doorstep?, Jim Dunion 169 

The Marin Computer Center: A New Age Learning Environment, David and Annie Fox 173 

PERSONAL COMPUTERS FOR LEARNING ENVIRONMENTS 

Personal Computers and Learning Environments: How They Will Interact, Ludwig Braun 177 

Personal Computers and Science Museums(brief abstract), Arthur Luehrman 178 

Computers for Elementary School Children (brief abstract), Bob Albrecht 179 

Bringing Computer Awareness To The Classroom, Liza Loop 180 

Implications of Personal Computing For College Learning Activities, Karl L. Zinn 182 

Getting It Right: New Roles For Computers In Education, Thomas A. Dwyer 193 

The Role of the Microcomputer in a Public School District, Peter S. Grimes 195 

COMPUTERS IN EDUCATION 

Microcomputers in a High School: Expanding Our Audience, William J. Wagner 198 

Introducing the Computer to the Schoolroom, Don Black 203 

Education or Recreation: Drawing the Line, William P. Fornaciari, Jr 206 

Learning With Microcomputers, Richard Harms 21 1 

Back to BASIC (Basics), David M. Stone 213 

A Comprehensive Computer Science Program for the Secondary School Utilizing Personal Computing Systems, Melvin L. 

Zeddies 216 

Microprocessor Computer System Uses in Education(Or, You Can Do It If You Try), Robert S. Jaquiss, Sr 223 

The Computer in the Schoolroom, Don Black 232 



BUSINESS COMPUTING ON SMALL MACHINES 

So You Want To Program For Small Business, Michael R. Levy 239 

Budgeting for Maintenance: The Hidden Iceberg, Wm. J. Schenker 245 

Microcomputer Applications in Business: Possibilities and Limitations, Gene Murrow 254 

MICROLEDGER: Computerized Accounting for the Beginner, Thomas P. Bun 261 

FOR COMPUTER BUSINESSPEOPLE & CRAFTSPEOPLE 

Money For Your Business— Where to Find It, How to Get It, Don Dible 267 

Selling Your Hardware Ideas: How To Start and Run A Manufacturing Oriented Computer Company, Thomas S. Rose 271 
Bringing Your Computer Business On-Line, Stephen Murtha, Elliott MacLennan and Robert Jones 276 

MICROCOMPUTER APPLICATIONS 

Toward a Computerized Shorthand System, W.D. Maurer 278 

Microcomputer Applications in Court Reporting, Douglas W. DuBrul 285 

Real Time Handwritten Signature Recognition, Kuno Zimmermann 291 

Input Hardware Design for Consumer Attitude Research With a Microcomputer, H.P. Munro 295 

Improving Name Recognition and Coordination in Video Conferencing, David Stodolsky 301 

The Bedside Microcomputer in the Intensive Care Nursery, Robert C.A. Goff 303 

An Automated Conference Mediator, David Stodolsky 307 

SPEECH INPUT & OUTPUT 

Synthetic Speech from English Text (brief abstract), D.Lloyd Rice 317 

Machine Recognition of Speech, M.H.Hitchcock 318 

COMPUTERS IN AMATEUR RADIO 

SSTV Generation by Microprocessors, Clayton W. Abrams 321 

A Real Time Tracking System for Amateur Radio Satellite Communication Antennas, John L. DuBois 325 

HARDWARE & SOFTWARE STANDARDS 

Microprocessor Standards: The Software Issues, Tom Pittman 343 

Proposed IEEE Standard for the S-100 Bus, George Morrow and Howard Fullmer 345 

BREWING HOME HARDWARE 

Two Cheap Video Secrets, Don Lancaster 362 

A Recipe for Homebrew ECL, Chuck Hastings 370 

N— Channel PACE 16-bit Microprocessor System, Ed Schoell 383 

DESIGNING WITH MICROPROCESSORS 

Microprocessor Interfacing Techniques, Rodnay Zaksand Austin Lesea 387 

Testing for Overheating in Personal Computers, Peter S. Merrill 390 

COMMERCIAL HARDWARE 

Interfacing a 16 Bit Processor to the S-100 Bus, John Walker 394 

Single Chip Microcomputers for the Hobbyist, John Beaston 402 

The Disystem: A Multiprocessor Development System with Integrated Disc-Oriented Interconnections, Claude Burdet. 406 
A Point-Of-Sales Network, Samuel A. Holland 423 

HIGH LEVEL LANGUAGES & TRANSLATORS 

A Short Note on High Level Languages and Microprocessors, Sassan Hazeghi and Lichen Wang 429 

Compiler Construction for Small Computers, R. Broucke 441 

Table Driven Software: An Example, Val Skalabrin 445 

Design Considerations in the Implementation of a Higher-Level Language, William F. Wilkinson 451 

An Arithmetic Evaluator for the SAM-76 Language, Karl Nicholas 460 

BLOCK STRUCTURED HIGH LEVEL LANGUAGES FOR MICROCOMPUTERS 

ALGOL-M: An Implementation of a High-Level Block Structured Language for a Microprocessor-Based Computer 

System, Mark S. Moranville 469 

SPL/M - A Cassette-Based Compiler, Thomas W. Crosley 477 

An Experimental PASCAL-like Language for Microprocessors, H. Mare Lewis 489 

An Introduction to Programming in PASCAL, Chip Weems 494 



FREE SOFTWARE in DR. DORR'S JOURNAL 






COMPLETE SYSTEMS & 
APPLICATIONS SOFTWARE 

User documentation, internal specifications, 
annotated source code. In the two years of 
publication, DDJ has carried a large variety of 
interpreters, editors, debuggers, monitors, 
graphics games software, floating point 
routines and software design articles. 



* 
* 
* 

* 



INDEPENDENT CONSUMER EVALUATIONS 






PRODUCT REVIEWS 
& CONSUMER COMMENTS 
Dr. Dobb's Journal publishes independent 
evaluations-good or bad- of products being 
marketed to hobbyists. It is a subscriber- 
supported journal. Dr. Dobb's carries no paid 
advertising; it is responsible only to its 
readers. It regularly publishes joyful praise 
and raging complaints about vendor's 
products and services. 



po box 6528 denvcf, Colorado 80206 (303) 777-7133 



sr 



It is not very often that there is a journal/newsletter that the Digital Group 
is able to recommend without some hesitation (and we get them all) . However, 
Dr. Dobb's Journal of Computer Calisthenics S Orthodontia is one pleasant 
exception. Jim Warren, the editor, has put together a good concept and is 
managing to follow through very well indeed. There is no advertising in the 
Journal . It is supported solely on subscriptions. That also means that 
manufacturers have zero leverage over the content of the magazine. The Joqrnal ' s, 
primary purpose is" to-pl ace significant software into the public domain *r.4 to 
provide a communications medium for interested hobbyists. The approach is 
professional and they are growing quickly. 

(In case it might appear otherwise to some people, there is no official link 
whatsoever between the Digital Group and Dr. Dobb's Journal - we've taken our 
lumps as appropriate just like everyone else when Jim felt they werf- justified.) 



We think Dr. Dobb's Journal is here to stay and 
for everyone in the hobbyist world of computers. 



publication that is a must 
Don't miss it! 



THE software source for microcom- 
puters. Highly recommended." 

Philadelphia Area Computer Soc. 
The Data Bus. 

"It looks as if it's going to be THE 
forum of public domain hobbyist 
software development. 

Rating- ft ft & ft" 
Toronto Region Association of 
Computer Enthusiasts (TRACE), 
Newsletter 

"The best source for Tiny BASIC and 
other good things. Should be on your 
shelf." 

The Computer Hobbyist, 
North Texas (Dallas) Newsletter 






& LOTS MORE! 

♦ Hot News& 

Raging Rumor 

* Systems Projects 



Dr. Dobb's journal 

of Computer Calisthenics / & Orthodontia 

Please start my one-year subscription (ten issues) to Dr. Dobb's Journal 
of Computer Calisthenics & Orthodontia and bill me for just $12. 

NAME 



ADDRESS 



.ZIP 



CITY/STATE 

Unconditional Guarantee: If you ever wish to discontinue your 
subscription for any reason, we will refund the complete amount for 
the remainder of your subscription. 



□ Visa 

□ Mastercharge 



Card Number 

Expiration Date 
Signature 



Outside the U.S., add $4 for surface postage. Airmail rates on request. 

Mail this coupon or a facsimile to: Dr. Dobb's Journal , Dept 56, 
El Camino Real, Box E, Menlo Park CA 94025 



DONT SETTLE FOR ANYTHING LESS 

Alan Kay 

Xerox Palo Alto Research Center 

3333 Coyote Hill Road 

Palo Alto CA 94304 



Biography 

As a child, Alan Kay found himself equally attracted to the arts and sciences. In 
fact, he has never been able to discover any important distinction between the two. 
A short stint as an illustrator and professional musician was followed by the pursuit 
of mathematics and biology, occasionally interrupted by involvement in theatrical 
productions. 

Eventually he discovered that the world of computers provided a satisfying 
environment for his blend of interests. A PhD (with distinction) from the 
University of Utah led to a research position at Stanford University and then to the 
Xerox Palo Alto Research Center where he is a Principal Scientist and Head of the 
Learning Research Group. 

In 1967-69, while at the University of Utah with Ed Cheadle of Memcor Inc., he 
designed the FLEX Machine, the first higher-level personal computer. At Xerox he 
started the Learning Research Group, a ten -year project to produce Dynabook, the 
personal computer of the 1980's. He is the initial designer of Smalltalk, the 
programming system of the Dynabook. 

Whenever he can he designs musical instruments, cooks, and plays tennis. 



Selected Writings 

E.LE.K-M o.c.hin?. 

FLEX, A FLexible Extensible Language, Tech. Rep. 4-7, C.S. Dept. U. Utah, 1968 
The Reactive Engine, PhD Thesis, C.S. Dept U. Utah, 1969 

Early Dy naboo k and Smalltalk 

A Personal Computer for Children of All Ages, ACM Nat'I Con., Boston, Aug 1972 
A Dynamic Medium for Creative Thought, NCTE Nat'I Con., Minneapolis, Nov 1972 

Vintage Dy naboo k and Smalltalk 

Personal Computing, Con. 20 yrs of Com. Sci., U. Pisa, Italy, June 1975 
Personal Dynamic Media, w/ A. Goldberg, Xerox PARC (1975) 

" , w/ A. Goldberg, exerpts: IEEE Computer, Mar 1977 
Teaching Smalltalk, w/ A. Goldberg, Xerox PARC, June 1977 
Microelectronics and Personal Computers, Scientific American, Sept. 1977 



WEST COAST COMPUTER FAIRE 9 BOX 1 579, PALO ALTO CA 94302 



"SIGNIFICANT PERSONAL COMPUTING EVENTS FOR 19 78" 



Adam Osborne, President 
OSBORNE & ASSOCIATES, INC., 6 30 Bancroft Way, Berkeley, 



CA 94710 



Summary 

This paper examines the princi- 
pal microprocessor achievements of 
1977, and forecasts significant events 
for 19 78. The emphasis is on semicon- 
ductor parts that have been developed 
rather than on home computing system 
hardware or software. The three most 
significant parts to be developed and 
shipped in 1978 are identified. 

The recipient of the White Ele- 
phant Award for achievement and per- 
sonal computing will be announced at 
the dinner. This award is described 
in the paper. In order to be consis- 
tent with the strange logic of the 
semiconductor industry, the White 
Elephant Award is an award for out- 
standing achievement rather than an 
award for lack of achievement, as the 
name might suggest. 



Significant Developments from 19 77 

I would like to summarize what 
I believe to be the most significant 
microcomputer industry achievements 
of 1977, while looking at implica- 
tions for 1978. 

At the level of semiconductor 
components, 1977 was a remarkable 
year in terms of product announce- 
ments and a pretty good year in 
terms of products actually being 
shipped. Let us look at the sig- 
nificant semiconductor developments 
of 1977. 

In 1977 the one-chip, 8-bit 
microcomputer became a reality. 
Mostek started to ship the 38 70 - 
a one-chip F8 - in volume. Intel 
followed closely behind with the 
8048 family of one-chip microcom- 
puters. The 804 8 family is remark- 
able for the presence of the 8 74 8 
series, which provides erasable 
programmable read-only memory on 
the microcomputer chip. This is 
a very significant industry first. 

The 8041 and 8741 are varia- 
tions of the 8048 that need to be 
specially identified. A casual 
reading of data sheets might lead 



one to believe that the 8041 and 8741 
are simply ; variations of the 8048, 
aimed at some obscure corner of the 
market. Nothing could be further 
from the truth. The 8041 and 8 741 
are significant devices because they 
have clearly filled a need. Let us 
explore this need. The concept of the 
one-chip microcomputer was easy enough 
to grasp. Based on the high sales of 
the two-chip F8 configurations, the 
economics of having a very low-cost, 
high-volume, low part-count microcompu- 
ter were self-evident. But this one- 
chip microcomputer provides a small, 
isolated logic system that may well 
exist on its own. A more subtle and 
troublesome problem is the sub-logic 
function, characterized by the device 
controller. It is easy enough to iden- 
tify device controllers such as floppy 
disk controllers, etc. Any microcompu- 
ter system will contain one or more 
of these peripheral devices, each of 
which needs its own interface logic. 
Unfortunately, this interface logic 
must usually be custom designed, re- 
sulting in support functions costing 
far more than the Central Processing 
Unit. This is a problem which is more 
significant than might at fir s-t- appear , 
since microprocessors are being used 
in such a wide and varied set of cir- 
cumstances. Thus, we are not simply 
talking about peripheral devices such 
as floppy disk printers and video dis- 
plays - we are talking about an endless 
and probably unknown set of interfaces. 
The 8041 and 8741 address themselves 
to this sub-logic, interface market. 
Irrespective of what the CPU and the 
peripheral may be, an 8041 will gene- 
rate the necessary interface "intelli- 
gence, providing this interface intell- 
igence can work within the speed, memory 
and I/O constraints of the 8041. To 
complete the effectiveness of the 8041, 
the 8741 allows you to generate inter- 
faces (initially in low volume) by using 
an erasable programmable read-only 
memory to hold programs as they are 
developed. 

We select the 8741 as the most 
significant part to be introduced and 
shipped in 1977. 



WEST COAST COMPUTER FAIRE 



10 



BOX 1579, PALO ALTO CA 94302 



The next area of significant 
development has been the 16-bit 
microprocessor. Fairchild introduced 
the 9440 and started to ship this 
microprocessor, while Data General 
introduced and started to ship the 
MicroNova. Both the MicroNova and 
the 9440 are one-chip implementa- 
tions of Data General Nova Central 
Processing Units. The MicroNova is 
an implementation of the Nova 3/ while 
the' 9440 is an implementation of the 
Nova 1200. 

Specialized processors have 
also begun to appear. Advanced Micro 
Devices has introduced the Am9511, 
which is an arithmetic processor. 
This very significant device finally 
makes it practical to use micropro- 
cessors in intensive computation 
applications. The Am9511 brings 
trigonometric functions, logorithms, 
exponentials and multiprecision 
arithmetic to microcomputer systems. 
We select the Am9511 as the second 
most significant part to be introduced 
during 1977. 

The next area where we have seen 
very significant developments is in 
support circuits for microprocessors. 
A wealth of parallel I/O devices, 
serial I/O devices, DMA controllers, 
priority interrupt controllers and 
peripheral interface circuits were 
introduced. We believe the most 
significant interface circuit to be 
introduced and shipped is the Z80 SIO 
device. The Z80 DMA device should 
also be mentioned, but Zilog is not 
yet shipping it. 

In 1977, Mostek became the first 
company to start shipping 16K-bit dy- 
namic RAMs in volume. Here again is 
a development whose significance can 
easily be overlooked. Why get excited 
about just another memory device? 
Very large, low-cost memory devices, 
as they appear in the future, are like- 
ly to revolutionize more industries 
than any other single development. 
I single out the music industry - the 
recording and reproduction of sound - 
as the one likely to experience deva- 
stating changes in the future. 

Although 1977 was a year for 
announcements and product releases, 
1978 is likely to see even more dra- 
matic new microprocessor-related pro- 
ducts. Specifically, 1978 will be the 
year of the 16-bit microprocessor - 
with the announcement and delivery of 
Intel 8086's, Zilog Z8000's, and sub- 



WEST COAST COMPUTER FAIRE 



stantial deliveries of TMS9900's and 
Fairchild 9440* s. Given these develop- 
ments, what impact, if any, can we 
expect on personal computing? 

The answer, surprisingly, is very 
little. Even now, three years after the 
first home computers appeared, there is 
a crippling shortage of software, even 
to support 8080-based microcomputers. 
If a manufacturer were to switch in 1978 
to a new 16-bit microprocessor, it is 
likely to be three or four years before 
this new microcomputer system has any 
reasonable amount of software support. 
Thus, the "software prop" is likely to 
keep existing microcomputers in. commer- 
cial .production for many, many years to 
come. This "software prop" will be re- 
enforced by the fact that , for many app- 
lications, the existing 8080-based micro- 
computer systems are more than adequate 
in terms of computing power; any switch 
to more powerful microcomputers would 
have little tangible economic advantage. 
Even for those applications where more 
computing power is needed, there is 
always the alternative of moving to new 
8080A Central Processing Units that are 
faster - and therefore more powerful - 
rather than moving to entirely new micro- 
processors and instruction sets . 

It is easy to fall into the trap 
of looking upon new microprocessor 
products as "new waves" which replace 
everything that came before them. I 
believe this is a very inaccurate 
visualization of reality. It is more 
accurate to think of new microprocessor 
products opening up new markets - for 
which older microprocessor products 
were inadequate. Once some particular 
level of microprocessor product has been 
adopted, it will be used for a long time 
to come because the cost of re-engineer- 
ing to take advantage of new, more recent 
developments is simply not realistic. 
That is to say, new personal computers 
were manufactured when 8080A Central 
Processing Units and support circuits 
made them economical in the first place. 
Since 8080A Central Processing Units 
and support circuits were adopted in 
personal computers, they will be the 
mainstay of personal computing for many 
years to come. The fact that an 8086 
will be available in 1978 does not mean 
that three years from now all 8080A- 
based systems will be obsolete. Far 
from it. The 8086 is going to have to 
make its own new markets, and will have 
little impact on established markets 
for past microprocessors. Therefore, if 
you are looking at the personal computing 
industry and deciding when to jump in, 

11 BOX 1 579, PALO ALTO CA 94302 



your answer is: as soon as you find 
products you can use. Do not wait 
until next year for better products 
which may appear, because next year 
you will be waiting for the follow- 
ing year, and you may finish up wait- 
ing forever. 

The fact that new developments 
will not cause old developments to 
become obsolete is made more certain 
by the huge customer base for per- 
sonal computing products which 
already exist. The personal compu- 
ting market buoyancy is attested to 
by the present show, and by the 
success of so many other shows 
around the country. This success 
has resulted from a combination 
of eager customers and willing 
visionaries who had the foresight 
to see what was coming and the 
vigor to help it on its way. My 
principal purpose tonight is to 
recognize the individual who I 
believe has done more in the past 
year to further personal computing 
than anyone else. The name of 
this individual will be announced 
at the dinner and not in this 
paper . To this individual , I 
plan to present a singularly apt 
award. In order to be apt, this 
award must recognize the perver- 
sities of the semiconductor in- 
dustry. Instead of rampant infla- 
tion, this is an industry of ram- 
pant deflation. Instead of pro- 
tecting every new product from 
competition, this industry "runs 
out to find a second source, who 
is given all necessary secrets to 
compete effectively. Since every- 
thing is back-to-front in this 
industry, it is only appropriate 
that an award for achievement be 
given a name more aptly associated 
with lack of achievement. There- 
fore, the annual award which I plan 
to present will be known as the 
White Elephant Award. But, instead 
of representing the biggest waste 
of effort, my White Elephant award 
will recognize the best-spent effort. 
The award consists of an 8741 chip, 
which is my choice for Chip-of-the- 
Year, mounted on a suitable plaque 
with a microscopic White Elephant 
cemented onto the surface of the 
chip. I plan to award this trophy 
annually, using the Chip-of-the- 
Year for each year's trophy. I 
furthermore plan to choose the chip 
and the recipient of the award 
entirely on my own, without letting 
my judgment be clouded by committees 

WEST COAST COMPUTER FAIRE 



or input from the personal computing 
community. 

In recognition of*" the individuals 
who made the selected chip possible, 
the award will list these individuals 
in addition to the person receiving 
the award. 



12 



BOX 1579. PALO ALTO CA 94302 



DINKY COMPUTERS ARE CHANGING OUR LIVES 

Portia Isaacson, The Micro Store 

634 S. Central Expressway, Richardson, TX 75080 

(214) 231-1096 



Computers can now (or will soon be) 
found in cars, sewing machines, tombstones, 
typewriters, and pinball machines. The age of 
the abundant computer is here. As it com- 
pletely unfolds we will think we have entered 
a land of science fiction. Dinky computers 
will permeate virtually all aspects of our 
lives. Computers will be used in old ways by 
people and businesses who couldn't afford them 
before and in many exciting new innovative 
ways that we couldn't even have thought of be- 
fore. 

Computers have been around for some time. 
Why all the fuss now about change? The answer 
is simple. We now realize that computers can 
be useful to individual people. A few years 
ago the price of a computer dropped past a 
threshold that caused a lot of people to under- 
stand that the computer was a personally use- 
ful tool. A few people understood before, but 
now that idea is so popular that it has some 
of the aspects of a religion. The idea of the 
personal computer certainly has a large and 
active following. 

The changes brought about by dinky com- 
puters will be many and not all will be good. 
Change will be rampant in the computer in- 
dustry. But few institutions or individuals 
will escape without change. Businesses both 
large and small, the U.S. economy, labor, 
women, the handicapped, the data processing 
professional, government, the U.S. Postal 
Service, and our educational system are among 
those that will be changed by dinky computers. 

B usiness, Labor, and the Economy 

Small businesses can make use of dinky 
computers in a variety of ways — most of them 
scaled down versions of the same applications 
in big businesses. Applications common to 
most small business include: general ledger, 
accounts payable, accounts receivable, pay- 
roll, and inventory control. Some businesses 
will find a use for word-processing in the 
generation of letters and reports. Mailing 
list maintenance and label generation are 
popular computer uses. A small business 



Of the many words Ted Nelson has given us, 

this is one of the best. 



WEST COAST COMPUTER FAIRE 



13 



might find a computer useful in scheduling 
people or equipment. Some businesses will 
have applications specialized to their own 
business such as a personnel agency's main- 
tenance and search of an applicant data base 
or a savings and loan company's calculation of 
amortization schedules. Innovative appli- 
cations might include sales forecasting, elec- 
tronic mail for ordering, building security, 
energy conservation, games as sales techniques, 
and graphics in advertising displays. 

A typical configuration for a small 
business computer system including 32K bytes 
of memory, dual floppy disks and a continuous 
forms printer costs less than $5 per day when 
amortized over three years. Small businesses 
commonly find that a computer costing less 
than $5 per day can replace one or more 
employees and can give the management more 
timely and accurate information than they 
were getting before. In general, the effect 
of the computer on the small business is to 
improve productivity while reducing costs 
primarily by reducing the number of employees 
in relatively unskilled positions. By re- 
ducing overhead an increasing number of small 
businesses will find themselves viable. This 
experience is not unique to small businesses 
but is the same as that of large corporations 
which preceded them in the use of business 
computers. Future applications could include 
conferencing and working at home. 

The effects of the managers' use of the 
dinky computer will be many. The productivity 
of clerical employees will be increased. The 
effect of an easily accessible private com- 
puter will be to improve budgeting and project 
control techniques. Electronic mail will de- 
crease the need for unskilled labor and de- 
crease the use of the post office. 

The same $5 per day business computer 
system found so helpful in small businesses 
will also be useful to the manager in the 
large corporation. Now a manager at nearly 
any level can afford his or her own private 
computing resource. One of the first appli- 
cations will be word processing for the 
preparation of letters, memos, and reports. 
Other immediate applications include: 
budgeting, project control, maintenance of 
specialized data bases, sales forecasting, 



BOX 1579, PALO ALTO CA 94302 



^ 



scheduling* reminders, mailing or routing list 
maintenance, and electronic mail. 

The overall effect of the use of low-cost 
computing in business will be an increase in 
.national productivity and an improved economic 
position for the U.S. in the world marketplace. 
The U.S., as the undisputed leader in low-cost 
computing technology, will be able to use this 
technology as a principal weapon in any future 
economic war. 

The labor force will experience both 
positive and negative effects of low-cost com- 
puting. On the positive side, there will be 
reduced need for people to do boring work. 
However, there will be a reduction in the de- 
mand for relatively unskilled labor such as 
clerical, mail service, and bookkeeping. 
Since most of these jobs are now filled by 
women, women will be hardest hit by the re- 
duced demand for unskilled labor. Countering 
the increasing demand for programmers will be 
the fact that entry-level programmers will be 
in plentiful supply since low-cost computing 
will make computer education, even self- 
education, widely available. 

Now computer-inventiveness is in the 
public domain. Before only large corporations 
and well-endowed universities could invent 
products containing computers. Now the man or 
woman on the street has economic access to 
computers and can use them in inventions. 
I'm sure they will. The same inventive talent 
that brought us the automobile and the elec- 
tric light will bring us "intelligent" compu- 
ter-based products that are now beyond our 
imagination. The businesses springing up 
around these inventions will employ people and 
further Improve the U.S. economic position. 

The Computer Industry 

As the demand for dinky computers goes 
up, the demand for gargantuan computers will 
come down. It will often be found that new 
applications, or portions of new applications, 
are more economical on small computers. The 
traditional corporate demand for bigger and 
bigger computers will slacken as fewer new 
applications are developed for it. Addi- 
tionally time-sharing use of the big corporate 
computer will be replaced by small computers 
in instances that are not locked in by data 
bases or applications software. 

The corporate data processing center 
will lose control of the data processing 
function as more and more departments own 
their own computers. The DP center will do 
less new development since new projects will 
be done at the department level if possible. 
The DP center may find a new role when depart- 
ments realize that they want to access the 
central data base and communicate with the 
computers of other departments. DP's new 
role will be in planning the distributed 



WEST COAST COMPUTER FAIRE 



14 



data base and communications networks. This 
role will not be easy since departments will 
realize that information is power. The 
struggle over how to distribute the data base 
will be a power struggle between departments 
with DP caught in the middle. 

Now that computers can be owned by indi- 
viduals or dedicated to the use of an indi- 
vidual in a corporation, there is little need 
for time-sharing. In fact, time-sharing was 
invented as an attempt to give the illusion 
that each user had his or her own computer. 
Now that each user can have his or her own 
computer, time-sharing is no longer needed and 
the overhead required by sharing makes it un- 
competitive. Present time-sharing customers 
will, of course, stay with time-sharing if 
they are locked in by software or data bases. 
Additionally, there are a few applications 
that may need resources too great for today's 
dinky computer. 

The big computer will not go down with- 
out a fight. We can expect to see signifi- 
cant price cuts in order to keep the 
gargantuan machine alive. But ultimately 
the giants will be kept only to run programs 
too hard to change. Most new architectures 
will be based on unshared computers, shared 
large disks, and shared fast peripherals 
connected into networks. The heyday of dis- 
tributed computing will have arrived. 

The new computer industry will see many 
opportunities. Computer manufacturing and 
distribution will be feasible small businesses. 
The new small companies with low overhead will 
keep the price of computing low; and, in fact, 
may provide the solution to the problem of the 
present near -monopoly in the industry. There 
will be a new economics associated with mass 
produced software. A complex software package 
may sell for just a few dollars because it will 
be sold thousands of times. Individuals may 
be able to capitalize on their efforts in 
software creation' through royalty payments in 
much the same way as authors of books do now. 
The data processing professional will be 
faced with many changes. The data processing 
department will need maintenance programmers, 
communications and network experts, and data 
base designers. Programming will be done in 
user departments where application knowledge 
will be at a premium. So programmers who 
don't fit into the new DP department will find 
themselves in user departments specializing 
in a particular application area. This 
specialization will certainly limit their 
mobility. 

Although lower-cost computers will mean 
more computers and a great demand for pro- 
grammers, the greater demand will be offset 
by a greatly increased supply of entry-level 
programmers and the fact that programming 
will be easier. Schools at all levels will 
be able to offer computer training since the 

BOX 1579, PALO ALTO CA 94302 



hardware is now affordable. Many people will 
even teach themselves how to program. The 
new dinky computers are interactive and much 
easier to program than big batch computers. 
All this could lead to a decrease in the 
salary-level of entry-level programmers. Ul- 
timately this must affect other levels. 

As the public becomes more and more 
knowledgeable about computers, the job of the 
data processing professional will seem much 
less glamorous and mysterious and much more 
just an ordinary job. This will have more 
than just an ego deflating effect on the pro- 
fession. A computer-literate public will de- 
mand that the programming job be done properly 
with the good of the public an objective. We 
can expect to see a public demand for legis- 
lation to control computer usage and program- 
mer qualifications. As the public becomes 
more aware that they are becoming increasingly 
dependent on unproven computer technology, our 
profession may find itself in the fish bowl 
of public controversy. 

Government 

Government at all levels will experience 
most of the problems and opportunities of 
businesses. In addition, government will face 
some unique changes. The increasing use of 
electronic mail will bring about further de- 
clines in the use and efficiency of the U.S. 
Postal Service. Government may be able to re- 
duce the demand for energy by encouraging the 
use of computers to control and conserve ener- 
gy usage in homes and industry. Crime can be 
decreased through the use of computerized 
security systems. The cost of political 
campaigns may be decreased by applying low- 
cost computing to the data processing tasks 
involved in a campaign. Government must help 
solve the problem of protection for the 
author's rights in mass-produced software. 
Increasing displacement of unskilled labor by 
computers will be a difficult governmental 
problem. New legislation may be required 
to control computer technology. Finally, our 
government will be faced with the new ghetto 
of the computer "have-nots." 

The Individual 

All the changes previously mentioned 
affect us to some extent individually. There 
are other effects, however, that deserve 
mention. 

The computer brings us a new form of 
entertainment. It is entertainment through 
the simulated experience. Often called com- 
puter games, this form of entertainment can 
offer very challenging and highly involving 
activities. The most popular game of this 
class is Star Trek. It lets one pretend to 
be captain of a star ship charged with 



defending the universe against klingons. 
The strategies and events are intricate and 
demanding requiring quick and correct de- 
cisions. Computer games are often intel- 
lectually stimulating as well as just plain 
fun. Although the computer games encourage 
socialization to an even less extent than 
television (there are no commercials), at 
least they involve the player in the activity 
unlike passive television-watching. 

Besides games, the computer offers other 
opportunities for entertainment and creativi- 
ty via computer-generated art and music. For 
several years a few artists and musicians 
have experimented with the computer as a tool 
for creativity and expression. Now the com- 
puter as an artist's tool is available to 
many. 

The low-cost computer coupled with video 
disk technology could do much to increase the 
availability and flexibility of personalized 
education. These new technologies make high- 
quality computer-assisted instruction techni- 
ques affordable by educational institutions, 
libraries, corporations, and individuals. 
The place of education may become much more 
flexible. The role of the educational in- 
stitution may change to primarily that of 
preparing courseware and certification of 
knowledge or skill levels. 

Computers can be used in many ways to 
improve the lives of the handicapped. A 
person without arms or legs could control a 
wheelchair by voice commands. .A blind person 
might use a typewriter, computer terminal, 
or calculator that speaks each letter or 
number. A deaf person might use a telephone 
that visually display es messages. A speech- 
impaired person might use a speech synthesis 
device that spoke what was entered at a key- 
board. The possibilities are exciting and 
many. 

In the gizmo age we will be surrounded 
by "intelligent" devices ranging from the 
self -dialing phone to the self -flushing toilet. 
Most of these devices will be helpful and 
friendly, but not all. The computer -generated 
junk phone call is with us. A computer-based 
device can place calls, play a recorded 
message, record a response, and even accept 
touch-tone input of a credit card number for 
a purchase. The unlisted number doesn't help 
since the device could place calls to all the 
numbers having a certain prefix — a very in- 
expensive way of placing calls to a part of 
town corresponding to a certain economic 
level. The devilish device could remember 
that you didn't answer and call until you do. 
It could even remember that you hung up and 
pester you until you listen. Unfortunately, 
junk telephone calls are a fraction of the 
cost of junk mail. A bill has already been 
introduced in the Congress to control this 
nuisance made possible by dinky computers. 



WEST COAST COMPUTER FAIRE 



15 



BOX 1579, PALO ALTO CA 94302 



What will be next? 

Low-cost computing will add fuel to the 
already threatening invasion of individual 
privacy. Abundant dinky computers mean data 
bases too numerous to control. An indivi- 
dual won't have a chance of knowing whose 
keeping what records about him or her. Cheap 
computers will mean increased feasibility of 
surveillance of individuals by government or 
business. The IRS might be able to check, in 
detail, every tax return. Isn't that exciting! 

Conclusion 

We've surely only glimpsed the brave, new 
world being created by dinky computers. The 
next few years will be more exciting and 
probably less believable than most science 
fiction. I want to be there as it happens. 
Perhaps I can help 



WEST COAST COMPUTER FAIRE " BOX 1579, PALO ALTO CA 94302 



BEGINNER'S GUIDE TO COMPUTER JARGON 
John T. Shen 
Computer Scientist & Consultant 
Naval Ocean Systems Center 
271 Catalina Blvd 
San Diego, CA 92152 



Human nature being what it is, we're always trying 
to develop tools to make problem-solving easier. 
We also try to develop tools to do monotonous and 
mechanical jobs so we HI have more free time to do 
the things we enjoy. So, unlike humans, the tools 
we develop make fewer mistakes, work without getting 
tired and don't go on strike. 

One of the best tools we've created is that 
creature called "computer." But what is a computer? 
What's the difference between a computer and a 
microcomputer? What do we mean by multiprocessing? 
And what do we mean by large scale integration 

(LSI)? 

A computer is an electronic tool that can 
accept Information supplied by a human or another 
machine, A computer also accepts instructions 
regarding what to do with the information 
supplied. The computer then performs the 
operations on the given information. After the 
instructions are performed, the computer 
supplies the results to the person who requested 
them, or to another machine which may need the 
results to carry out other operations. 

A basic computer is usually composed of 
an input and output (I/O) unit, memory Cor 
"storage") unit. 

The input unit accepts the information to 
be operated on from people or other machines, 
and the output unit makes the results available 
in terms a human can understand. 

The memory unit stores information until 
needed by one of the other units, such as the 
arithmetic and logic unit, the control unit 
or the I/O unit. 

The arithmetic and logic unit CALU) does 
the arithmetic and logic operations necessary 
to sort or search for particular items or 
perform mathematical procedures. 

The control unit manages all the other 
units. For example, the control unit decides 
when the I/O unit will accept information and 
when the information should be sent from the 
I/O unit or the memory unit to the ALU for 
processing. The control unit also decides 
what operations to carry and in what sequence. 
When an operation is completed, the control 



unit decides whether the results should 
be sent to the I/O unit or the memory 

unit. . ., .. ^ j i„ 

The technology for building today s 
computers is very different from the 
technology that built computers 10 to 
20 years ago. Until the late 1950's, 
computers were built from electronic 
tubes, mechanical relays, resistors 
and capacitors. We call these computers 
the "first generation". 

From the late 1950's to the early 
1960's, computers were built from 
discrete transistors, resistors and 
capacitors. We call these computers 
the "second generation"^' 

In the early 1960's, a new tech- 
nology arose, called integrated circuits 
(IC), where many components are fabri- 
cated on a chemical substrate called a 
"chip", which is about 1 centimeter 
square. In the early 1960's only 100 
transistors could be packed on a chip. 
Computers implemented with 100-transis- 
tor chips are called the "third-genera- 
tion". . ,. u • , 
Later, new fabrication techniques 

were developed, so that today we can 
pack 1000 or more transistors on a 
single chip. We call these computers 
"fourth generation". 

From the first to the fourth 
qeneration, the physical size of a 
computer with the same computing power 
shrank drastically. The cost also 
decreased impressively, and the com- 
puting speed increased several magni- 
tudes. _. X 

A computer designed for use in 
many fields of business and science is 
called a "general -purpose computer . 
A computer designed for a specific 
purpose, such as monitoring a patient s 
heart condition, is called a special- 
purpose computer". 

A small computer is called a "mini 
computer". A very small computer is 



WEST COAST COMPUTER FAIRE 



17 



BOX 1579, PALO ALTO CA 94302 



a "microcomputer". The central processing unit 
(CPU) of a microcomputer is called a "micro- 
processor". 

If a computer has more than one CPU, and if 
the CPU's are operating in parallel, the computer 
is called a "multiprocessing computer" or a "multi- 
processor". 

But just having a computer will not solve 
your problems. You need a way to instruct the 
computer to solve a problem. One way is to write 
a "program" (a set of instructions or steps that 
tell the computer exactly how to solve a problem. 

Since English is our native language the 
languages used for writing programs are usually 
English-based, examples of English-based languages 
are FORTRAN, COBOL and ALGOL. Some of the pro- 
gramming languages are mathematically-oriented, 
such as APL. Both types are "human under- 
standable". They are called "high-order languages". 

But all computers are built on the simple 
language of "yes" and "no" or (Ts and o's), which 
is the "machine language". To use high-order 
languages, we must build translators to act as 
interpreters between man and machine. 

The programs programmers write to solve 
their particular problems are called "application 
programs". The large program developed by the 
computer manufacturer for managing the computer 
resources such as I/O devices, memory spaces and 
CPU time is called the "operating system". 
Programs that facilitate the easy use of I/O 
devices and peripheral memory are called 
"utility programs". 

The application programs, language trans- 
lators, operating system and the utility pro- 
grams are called "software". 

When a language translator completely trans- 
lates a program before the execution of that 
program, the translator is called a "compiler". 
If a translator translates one statement of a 
program at a time and executes that statement 
immediately, the translator is called an 
"interpreter". 

When a portion of a control unit is 
electrically programmed into a device call 
"read-only memory' (ROM), or when some of the 
software is electrically programmed into one or 
several ROMs, the programming is called "micro- 
programming". 



WEST COAST COMPUTER FAIRE is BOX 1579, PALO ALTO CA 94302 



EVERYTHING YOU NEVER WANTED TO ASK 
ABOUT COMPUTERS BECAUSE YOU DIDN'T 
THINK YOU'D UNDERSTAND IT ANYWAY, 

OR 
A TALE FOR PEOPLE WHO GOT TALKED INTO 
COMING HERE BY SOMEONE ELSE 

Copyright Jo Murray, 1978 

By 
Jo Murray 
2325 Lelmert Blvd. 
Oakland, Ca. 94602 

This talk will trace the history of 
computers, beginning with Charles Bab- 



to ignore them. 

Actually, when computers were first 
invented, Just about everybody did ig- 
nore them. Hard as it is to believe, 
there was a man back in the early nine- 
teenth century who invented all the 
principles of computers. His name was 
Charles Babbage, and he got a lot of 
help in interpreting his ideas from the 
Countess of Lovelace. You may know her 
better as the only daughter of the 
poet Lord Byron. Other people call her 
the first computer programmer. 

Her parents separated Just after she 
was born, and she never saw her father, 

wwim..™-., —c* ~o but * e did wrlte her l Qtter8 ^d he „ 

bage, who might have given us computers apparently referred to her in some of 
more than 100 years ago if he had only his poems, although he didn't seem en- 
known more about electricity. Bab- tirely pleased with her intellectual 
bage was aided by the Countess of Love- talents. A lot of people think he may 
lace, the daughter of that soulful and have had her in mind in the passage in 



anti-machinery poet Lord Byron. Then 
there was George Boole, another nine- 
teenth century figure who gave us the 
symbolic logic that lets computers de- 
cide what to do next. The history 
continues into the current century with 
a few references from such technical 
publications as Alice Through The Look - 
ing Glass , a brief description of 
vacuum tubes, transistors and the sil- 
icon chips that run the computers at 
the Falre, and no formulas whatsoever. 

If you're one of those people who 
have been thinking that alii computers 
do is print out bills in funny look- 
ing numbers and letters and then con- 
fuse your orders with your next door 
neighbor's, then this is the place for 

you. 

You know, you Just kept thinking 
that if you ignored them long enough, 
they'd go away. Then the humans who 
could do thinks like talk on the tele- 
phone and read names and addresses in 



Don Juan which reads: 

"'Tis pity learned virgins ever wed 

With persons of no sort of education 

For Gentlemen although wellborn and 
bred 

Grow tired of scientific conversation. 

I don't choose to say much upon this 
head, 

I am a plain man and in a single 
8 tat ion 

But, Oh ye Lords of ladies intel- 
lectual, 

Inform us truly, have they not hen- 
pecked you all?" 

Other people thought a little more 
of her intellectual talents. When she 
first met Babbage, she was with a group 
that was described as looking at his 
machine as if they were a bunch of 
savages looking at a gun for the first 
time. But Lady Lovelace apparently 
grasped the principles of Babbage* s 
machine the first time she saw it. 



longhand instead of making you put them She even predicted that some day the 



in block letters in little squares 
would come back. 

But so far they haven't. And if 
you're like me, one day you decided 
it is convenient to have computers 
that know whether there are seats on 
planes and telephones you can use to 
call across the country and little 
calculators you can hold in your hand. 
That's not even considering all the 
wonderful machinery here today. 

Not all of the electronic marvels 
I we have today are computers, strictly 
I speaking. But it is getting very hard 



engines would be used to write music. 

Babbage got the idea because he was 
fed up with the mathematical mistakes 
of the times. In his day, sailors and 
astronomers and anyone else interested 
in math carried huge books of tables. 
But they were calculated by hand and 
they were set in type by hand, and the 
number of mistakes was incredible. 
One book of calculations for sailors 
was so bad that the captain of one 
ship, who got it as a gift and didn't 
realize it was more vaulable for its 
beautiful bindJqg than its accuracy, 



WEST COAST COMPUTER FAIRE 



19 



BOX 1579, PALO ALTO CA 94302 



was never heard from again. 

So Babbage sat down and Invented 
his difference engine, as he called 
it. It worked by calculating tables, 
using the difference between two num- 
bers. The idea was that if one pound 
of meat cost five shillings, two pounds 
would cost ten shillings and three 
pounds would cost fifteen shillings. 
So instead of multiplying three times 
five to find out how much three 
pounds of meat would cost, you could 
look at a table that was constructed 
by adding five each time. 

The machine was also capable of 
making tables involving squares of 
numbers, using the principle of the 
second derivative, or "difference." 

This principle was not new: this 
was the way most mathematical tables 
were constructed at the time. What 
was new was the idea of having a 
machine do it, and the idea that a 
machine could be constructed so it 
would never make mistakes. 

Babbage used punch cards, which 
had been developed in France to con- 
trol looms so they would weave pat- 
terns in cloth, to feed his machine 
information. He even devised an in- 
genious system, based on logarithms, 
so the machine would stop and ring a 
bell if the attendant gave it the 
wrong card. The engine printed out 
the answers itself to eliminate the 
possibility of mistakes in typeset- 
ting. He then went on to design a 
more sophisticated machine, which he 
called the analytical engine, that 
would do almost everything computers 
do today. 

Babbage* s principles were so close 
to today's that Howard Aiken, who 
helped build one of the early modern 
computers, once said, "If Babbage had 
lived 75 years later, I would have 
been out of a Job." 

Babbage, who held himself in very 
high esteem, apparently agreed. He 
wrote that if anyone later developed a 
similar machine, "I have no fear of 
leaving my reputation in his charge, 
for he alone will be able to fully 
appreciate the nature of my efforts 
and the value of their results." 
When Aiken came across these lines, 
he said he felt like it was a voice 
personally addressing him from the 
grave. 

But Babbage had two things going 
against him, and his engines were 
never completed. 

For one thing, electricity had 
Just been discovered. It was only 
in 1831 that Michael Faraday discov- 



ered a moving magnet would Induce an 
electrical current in a coil of wire. 

For another thing, toolmaking was 
a relatively new art. Clocks were 
about the most complicated machines 
that existed, and they were all Individ- 
ually made by hand. Since hecould not 
use electricity, his machines needed 
an enormous number of gears. He 
had to have a workman make most of 
the tools he needed to make the pre- 
cise gears, and then his chief workman 
got mad and quit and ran off with the 
tools. But that was another problem. 

Babbage did gain a sort of prominence 
for his time. There were Just enough 
people who appreciated his genius that 
when he died in 1871, the Royal College 
of Surgeons of England preserved his 
brain, which is still there today. 
But the surgeons who examined it to 
see if brain looked different from 
anybody else's couldn't find anything 
especially remarkable about it. 

After Babbage and the examination 
of his brain, computers faded from 
the scene for awhile. There we»e Just 
a number of minor steps that all had 
to be taken before the first modern 
computers could be built during World 
War II. 

For one thing, Babbage wanted his 
engine to be smarter thanmost computers 
are today. He wanted it to be able 
to do sophisticated things like add 
204 and 31 1 . Both of his engines— 
which were never completed--were to 
do this using the decimal system in 
the same sort of way that the odometer 
on a car ¥OPk5. When one row of fig- 
ures reached 10, it was to automatical- 
ly cause the wheel of figures in the 
next row to turn. 

Today's computers don't even try 
to count as high as 10. They're like 
the Red Queen in Alice Through the 
Looking Glass . You remember when she 
asked Alice, "What's one and one and 
one and one and one and one and one 
and one and one and one?" 

"I don't know," Alice replied. "I 
lost count." And then the Red Queen 
yelled, "She can't do addition." 

Well, the difference between us 
and computers is somewhat like the 
difference between Alice ad the Red 
Queen. Just about anybody here can 
add 204 and 3 11 in their heads if 
they put their minds to it. But if I 
stood here and said "one" over and 
over again, first for 311 times and 
then for 204 times, I doubt that any- 
body could tell me exactly how many 
times I said "one." 

Well, this is what computers do. 



WEST COAST COMPUTER FAIRE 



20 



BOX 1579, PALO ALTO CA 94302 



They say one, one, one, one, one, one, 
one, etc. and they keep track of it. 
Or they subtract *one* two or three hun-i 
dred or thousand times. And if you 
think about it, multiplication is 
simply a matter of adding numbers and 
division is simply a matter of sub- 
tracting the divisor over and over. 

Actually, it's a little more compli- 
cated than this, but this is basical- 
ly how they work. The don't know any 
numbers but ones and zeros and they 
count them over and over again. 

This is known as the binary system, 
and when you take the binary system 
and electricity, you can do some in- 
credible things with computers. 

The reason we use 10 as a base is 
probably because we have 10 fingers. 
Babbage used base 10, too. But the 
modern computers don't have 10 fingers 
or even 10 rows of digits like the 
early machines. They Just have elec- 
trical switches. They're either on 
or off. They either have current flow- 
ing through them or they don't. 
If they're on, the computer counts 
them as one. If they're off, the com- 
puter counts them as zero. This gives 
you a numbering system that' s very 
easy for computers, even though it's 
difficult for humans. 

Probably people who work with com- 
puters a lot can look at binary fig- 
ures and read them as easily as we can 
read the decimal system. But I can't. 
So I'm going to refer to this little 
card to explain the binary system. 

The digit in the righthand column 
represents the number of ones. The 
other columns are not powers of 10, 
but powers of 2. 



Binary 


Decimal 




Equivalent 


1 


1 


10 


2 


4 . 
1 1 


1 


1 


1 


11 

100 


I 



Binary 



Decimal 



1 

10 


1 

2 (2]+0) 


11 


is the 3 (2U1) 


100 


same 4 (2 2 +0+0) 


101 


as 5 (2| + 0+l) 


110 


6 (22+2^0) 


111 


7 (21+2U0) 


1000 


8 (2 5 +0+0+0) 



You can add them Just like you 
add in the decimal system, except 
that as soon as the total is 2, 
you have to carry a digit to the 
next column. 



You can also use the on-off switches, 
or the zeros and ones, to represent 
letters. You can say A=0, B=1 , C=01 , 
and so on. By the time you get up to 
five digits, you have 32 different 
combinations and that's enough for 
the entire alphabet. From there, 
you can write anything. 

So now you've got all this material 
in the computer represented by ones 
and zeros. But you still have to do 
something with it. That's where George 
Boole comes in. 

Boole was an Englishman who lived 
during Babbage' 8 lifetime. Boole 
lived from 1815 to 1864, and Babbage 
did most of his workfrom 1812 to 1842, 
but I haven't come across any evidence 
that the two knew each other. 

Boole developed something called 
Boolean algebra, which is really more 
symbolic logic than algebra. He 
also was one of the first people who 
argued that logic should be. a branch 
of mathematics, not philosophy, and he 
certainly had some good reasons for 
it. Today youfind a fair number of 
philosophy majors working with com- 
puters, and it '8 not as odd as it first 
sounds. The computers work on the 
same principles of logic that philoso- 
phy departments teach. 

Boolean algebra is the type of logic 
where you have those little puzzles 
that look as if they came out of 
algebra books, such as "If A is true, 
B is not." 

Nobody found much practical use for 
this until this century when a man 
named Claude Shannon was working on 
his master's thesis, and discovered 
you can change these logical statements 
into sets of ones and zeros and let 
"he computer use the rules of Boolean 

Igebra to make its own decisions about 

oat to do next. This is the sort of 
logic that should tell the computer it 
doesn't have to send you a bill if 
you don't owe the store ay money. The 
computers that haven' t been programmed 
very well are the ones that send you 
a bill, anyway. 



WEST COAST COMPUTER FAIRE 



21 



BOX 1579, PALO ALTO CA 94302 



They say one way to tell If you'd make 
a good computer programmer Is to take a 
puzzle like this one from Litton Indus- 
tries. If you can figure this out and 
think it's fun, you'd probably make a £ 
good programmer. If you're ready to 
throw up your hands in despair, you'd 
better stay away from programming. 

"If Sara shouldn't, then Wanda 
would. It is impossible that the state- 
ments: 'Sara should* and 'Camille 
couldn't 1 can both be true at the same 
time. If Wanda could, then Sara should 
and Camille could. Therefore Camille 
could. Is this conclusion valid?" 

Now that you know whether you should 
be a programmer or not, we'll go on. 

Another name you hear a lot is" that 
of John Von Neumann. He's the one who 
figured out that you could put the 
entire program into binary form. Just 
why he decided to do this I'm not sure 
because if there was anybody who didn't 
need computers, it was Von Neumann. 
One story about him is that one of his 
fellow researchers had stayed up until 
4:30 a.m. doing five problems with a 
desk calculator. Then he decided to 
play a trick on Von Neumann. Von Neu- 
mann came in the next morning, and his 
friend asked for help in solving the 
problems. In five minutes, Von Neumann 
had worked out four of the problems in 
his head. The other person, who still 
didn't say he already knew the answers, 
then announced the fifth answer. Von 
Neumann apparently was quite perturbed 
that someone could figure out a better 
solution to the problem than he could 
until i-h»y told him what was going on. 

The early computers worked on 
vacuum tubes, and that soon got to be a 
problem. Vacuum tubes get very hot and 
they burn out. They're like a light 
bulb. It doe an' t matter how good they 
are; sooner or later they're going to 
burn out. The ENIAC, which was the 
first totally electronic computer, had 
17,000 vacuum tubes. And it wasn't long 
before computers were getting so big 
that if you made them any bigger, it 
would take 24 hours a day Just to re- 
place the vacuum tubes that had burned 
out. 

Fortunately, about this time— in 
1947 to be exact — the transistor was 
invented. Transistors do the same thing 
as vacuum tubes, but they're much tinier 
and they never burn out. It is possible 
to destroy a transistor by dropping it 
or by running too much current through 
It, but you really have to work at it. 

This solved a lot of problems, but 
it basically got computers down from 



WEST COAST COMPUTER FAIRE 



the size of a small house to about 
the size of a amal living room. You 
oould,by the late 1950s, use tran- 
sistors to make radios small enough 
to pick them up and carry them around 
with you, but computers still needed 
too many transistors to be very 
portable. 

Ejy this time, you had to do your 
work under a microscope, but scientists 
kept on working. In the lie 1960s, 
something called an Integrated cir- 
cuit was produced. Dr. Robert N. 
Noyce, the president of Intel Corp. in 
Santa Clara, is generally credited 
with being one of the co- discoverers 
of it. What the Integrated circuit 
means is that you can put the entire 
electronic circuit on a single piece 
of material, usually silicon. 

These are so minute that it's hard to 
believe. This is a silicon chip. 
What's even more amazing is the fact 
that it's Just the little gray spot 
in the middle that does all the compu- 
tations. The rest is here because you 
can't connect wires to something as 
small as the chip. But these gold 
lines eventually oonnect with 14 tie 
hairlike silver wires that lead into 
the silicon. I don't know how many 
transistors are on this particular 
chip, but some have 100,000* It may 
soon be possible to put a million 
transistors on something this size. 

To give you an example of the dif- 
ferences in size the integrated cir- 
cuit has meant, it's possible to put 
the entire UNIVAC computer, which was 
the first commercial computer, on one 
of these. 

If your family was one of the first 
in the neighborhood to have a tele- 
vision, you may remember the UNIVAC 
which was a guest of sorts of "People 
Are Funny." It used to spew all its 
cards out in front of the camera and 
Art Linkletter would pick them up and 
read off the names of two people who 
would get to go on a blind date 
together. 

The UNIVAC is now in the Smithsonian 
Institution, and it's the little chips 
like these that are taking over the 
world. Probably every piece of machlnerj 
at the Faire here depends on these 
silicon chips for its operations. 

The silicon chip starts wth a very 
unexotic raw material: sand. A 
shovelful of sand can supply the basic 
raw material for an entire computer. 

Silicon companies take sand and pure 
silicon "seeds," which are sold by 
only three companies in the world. They 

22 BOX 1 579, PALO ALTO CA 94302 



use these and "grow" cylinders of 
material which look like shiny, gray 
mirrors. 

Once you get the silicon, the hard 
part comes. You have to put the trans- 
istors on it. The way you do it is 
sort of a cross between batik and 
photography. 

In batik printing, you first draw 
the design on a piece of cloth. Then 
you decide which parts you want to turn 
out a particular color and cover every- 
thing else with wax. You dip it in 
a vat of dye, let it dry and scrape the 
wax off. The next time you cover 
everything but another color with wax, 
dye it again, scrape the wax off again, 
and keep on going until the picture is 
finished. 

To make a silicon chip you do al-? 
most the same thing except that lay- 
ers of silicon oxide take the place 
of the wax and tiny lines of metal 
form the picture. The lines are so 
small and so thin that they are put 
on the chip through a photographic 
process in much the same way that 
shining a light through a negative 
produces a picture on a sheet of 
photographic paper. In this case, the 
negative is called a photomask. 

To make a photomask, you need a 
master diagram of the chip. These 
drawings start out several feet square 
and are reduced to the size of a 
chip, again through a photographic 
process. The masks, which are made 
out of glass, are made from these 
drawings • 

Each chip needs eight to ten dif- 
ferent photomasks, but there are 90 
to 100 steps involved by the time 
the chip is cleaned and new layers 
of oxide are formed on it and scraped 
off between photography sessions. 
And people are already working on ways 
to eliminate the photomasks and write 
the diagrams directly on the chip. 
So far, though, the machines that do 
this cost over a million dollars. 

All along the way, it's a very del- 
icate process. People who make chips 
don't even let you take pencils inside 
the laboratory because they produce 
dust when they write on paper. The 
water used to wash the chips between 
the different processes has to be so 
pure that companies sometimes have 
their own water purification plants. 

One firm — Monolithic Memories in 
Sunnyvale — says its water is 100 times 

I purer than distilled water. And when 
the plant finishes with it, it's still 
100 times purer than tho regular city 



water. 

When you start talking about chips 
this size, you find that computers 
are almost becoming self-perpetuating. 
It would be impossible to make them 
this small if you didn't already have 
computers to help do it. Computers 
are used to test the models of the 
circuits, they draw the layouts for 
the photomasks and thy control the 
manufacturing equipment. 

But theycan't do it all by themselves 
yet. When the whole thing*. is finished, 
that's when they call in the humans. 
The humans look through a microscope 
to check all of the circuitry on the 
tiny chips. The people at Monolithic 
Memories tell me that after a few 
weeks of training, people learn to 
check one in about a minute. The 
reason they need people is that there 
are so many different structures and 
so many differences in the size and 
the color of the lines that are 
still acceptable that there's no way 
to program a computer to remember 
them all. 

There's still not a computer that 
can remember as much as even the 
average human brain. 



WEST COAST COMPUTER FA1RE 



23 



BOX 1579, PALO ALTO CA 94302 



INTRODUCTION TO PERSONAL COMPUTING 
A BEGINNERS APPROACH 



Robert Moody 

2233 El Camino Real, Palo Alto, Calif. 94306 

Phone: Home (408) 225-3341, Work (415) 327-8080 



I Introduction 

Computers are now within everyone's reach! 
Whether you are a housewife, small businessman, 
student, professional, musician, or in real es- 
tate — computers are being made and sold at 
prices you can afford, and they will set you 
free in ways you never dreamed of! A personal 
computer will open possibilities; it will al- 



use for communication between you and your com- 
puter. 

Bit : The smallest unit of measure in a computer 
word; several bits make up a byte, or computer 
word. 

Bug : The cause of a malfunction, usually in a 
program. They're called "bugs" because they can 
be hard to find. 



most certainly change your lifestyle. 

Most people, when they visualize a computer, Byte : The space which a letter or digit (one 
they think of monstrous machines that tower over character) takes up in a computer. Space in a 
us, seeing all and doing all. It's really not computer is measured in bytes. A megabyte is a 
that way. Everybody has been communicating with million bytes, 
a computer in one way or another most of their 
adult lives and not really known it. For ex- 
ample, all your tax returns are processed by a 



computer, most amjor department stores handle 
their buying, stocking, and billing by computer. 
All your credit card buying is handled by com- 
puter, every check you write is processed by 
computer. Dentist, doctor, hospital, gas, elec- 
tric, phone bills are handled by computer. Why!!! 

Take a city the size of San Jose for inst- 
ance. 3ust think of the tremendous amount of 
manpower it would "take" to try" and post all the 
checks that were written in one day, or the 
amount of phone calls to be logged in one day. 
Handling that amount of information — having 



Computer : A machine for handling repetitive in- 
formation. Basically it can calculate, compare, 
alter, send and receive information very rapidly. 



Core : See memory. 

CRT: Your computer's "TV screen", showing you 
what's IN there. The CRT is your computer's way 
of talking to you. It is also something refer- 
red to as a display unit, or terminal. 

Data : The information that gets WORKED OVER, 
when your program runs. Data is all the in- 
formation you have your computer use, everything 
that is sent into your computer to store and 
retrieve. 



that kind of computing power - is at your finger Disk . ft ^^ storage dBKlicBf eithsr fi oppy or 
tips today. 

The most important think that I want to 
convey to you is: computers are not just for 



geniuses!!! You don't have to be a special 
gifted person to own or operate one. 

This presentation, I hope, will enlighten 
you a little as to what are these things, 
personal computers, how you can talk and ask 
questions about them, what makes them up, and 
what you can do with one. 

II Buzz Words 

As you know, all types of industries have 
their own language that they use. We as a group 
and a new up-coming industry, are no exception. 
As you scan down the second page of the handout 
I have given you, there is a short list of these 
buzz words, and a simple explanation of each. 

BASIC : Beginners All-purpose S_ymbol instruc- 
tional Code: a mode of language that you will 



hard disk. 

Display : Same as CRT. 

Floppy Disk : A mass storage device, which uses 
a flexible platter to store a large amount of 
information. 

Fortran : Another type of computer language. 

Hard Copy : Computer output ON PAPER, for per- 
manent storage. 

Hard Disk : Much like a floppy, a hard disk 
stores a tremendous amount of information, but 
its platter is much larger and not so portable. 

Input : The information that goes IN to your 
computer system. The computer's "food". 

Interface : A connector that "translates" be- 
tween two parts of a system. You generally need 
one interface for each peripheral , to hco'k it to 
your computer. 



WEST COAST COMPUTER FAIRE 



24 



BOX 1579, PALO ALTO CA 94302 



Mass Storage ; Any way of keeping a lot of in- 
formation OUTSIDE your computer, but available 
to it. This is your computer's "memroy". Most 
common kinds of mass storage are tape and disk . 

Micro, Microcomputer, or Microprocessor ; Same 
as computer. The "micro" came in when we 
learned to make them physically tiny — they are 
about the size of pencil erasers. 

Output ; What your computer system produces. 

Peripherals ; The devices attached to your com- 
puter, such as the display , keyboard , printer , 
etc. 

RAM ; Random Access Memory. This storage device 
is used by your computer to change the data you 
have put into it, then it is transferred to a 
mass storage device. 

Storage ; The part of your system that remembers 
information, as opposed to the parts that 
"think". 

Software ; A list of instructions to the com- 
puter, telling it what to do and when to do it. 

Terminal ; A unit for conversing (input or out- 
put) with your computer. It has a keyboard, 
plus Display or Print-out. 

TUT; "Television typewriter". A keyboard and 
electronics specially designed to turn your TV 
into a TERMINAL. 

Ill what Makes Up a Computer? 

In your handout you will find a block dia- 
gram of a computing system. As you notice, 
there are not many modules or components that 
are needed to do the job. The technology today 
has made this possible with microelectronics. 
With this tremendous reduction in physical size 
of transistors and diodes it enables us to com- 
pact a large amount in a vary small -area. Also, 
the power requirement is small as well. 

The first and most important module is the 
CPU, or Central Processing Unit. This is the 
brain of the personal computer. The CPU does 
all the actual work of calculation, comparison, 
alteration, receiving and sending data. . Every- 
thing else that we attach is a function from the 
CPU. 

There is a wide variety of CPU's on the 
marketplace today. Depending on who you talk 
to, one is better than the other. Don't let 
this discourage you now; all that you need to 
know at this point is that they work. You can 
get into particulars later. 

The CPU cannot operate by itself; along 
with it you need some memory. RAM or Random 
Access Memory does the job. This portion of the 
computer allows the CPU to activate a section of 
the data at one time. For instance, the RAM 
could be compared to an active filing system. 
The data is stored in some kind of order and the 
CPU only pulls the data it needs and keeps the 



rest for later. 

Now that the CPU has changed, calculated, 
or compared this data, it needs to store it 
someplace. This is where mass storage comes in. 
Here again there is a wide variety and different 
types to choose from, but basically it is com- 
pared to an inactive file. This file holds much 
more data than the RAM in your computer does. 
You as a computer operator put in and take out 
these files at will, making one active and an- 
other inactive. 

To be able to accomplish the task of moving 
all this data around, you have to be able to 
talk to your computer and have it talk back to 
you. A peripheral device called a Terminal is 
necessary. This is usually made up of a key- 
board, much like a typewriter keyboard, and a 
display unit. The Terminal is attached to your 
computer through an interface device. There 
are two basic types; serial and parallel. 

The serial I/O, or input-output, interface 
takes the data you are typing in and sends it 
one bit at a time to the RAM. Parallel, on the 
other hand, sends all the bits that make up the 
computer word or byte, and puts them all in at 
one time. This might seem very confusing to 
you, but all that is necessary to know is what 
kind of interface is incorporated on the peri- 
pheral you are attaching to your computer, and 
match it up with the proper I/O device. 

Now that I have thoroughly confused you, 
we will push onward. 

IV Programming 

Now that all this hardware has been 
assembled, we have all 'the physical things that 
are needed, but there is something that is 
lacking; software. What this thing does is 
allow the computer to try and make some sense 
out of what you are trying to tell it, and vice 
versa, have you understand what it is trying to 
tell you. Fundamentally there are two types: 
systems and applications. 

Systems software is what the computer uses 
as its language. It takes the information in, 
in this special language, and acts on it. What 
you do as an operator is use this language to 
develope an application. 

There is a lot more to programming than 
just a couple of sentences I have used to de- 
scribe it. I could ramble on about all the 
different types of systems software, but I have 
to spend more time on the biggest question that 
I'm asked, and that is "I would like to have 
one of these things called personal computers, 
but what the hell do I do with it?" 

V What Can I Do With It? 

The most asked question that I receive is: 
"what can I do with this thing, now that I have 
it?" The uses for personal computers are end- 
less; the list below only shows a few uses — 
let your imagination go and you will see! 



WEST COAST COMPUTER FAIRE 



25 



BOX 1579, PALO ALTO CA 94302 



Education 

Accounting and billing 
Invoicing 
Sorting 
Receipts 
Taxes 

Addressing 
Budgets 
Forecasting 
Reducing the physical 
SIZE of FILES (custo- 
mer files, corres- 
pondence, product 
files, etc.) - No 
more file cabinets ! ! ! 
Playing games 
Engineering design-aid 
Cashflows 

Maintaining "tickle- 
files" (calendar- 
reminder systems) 
Filling out checks 
Playing the stock market 
FILING 

Remembering all trans- 
actions 
Making and keeping card 

catalogs 
"Simulating" results of 
one decision versus 
another, so you can 
see their effects 



Recordkeeping 
Inventory management 
Routine correspondence 

and form letters 
Filling out forms 
Calculation of all 

kinds 
Receiving and placing 

phone calls 
MATCHING any informa- 
tion with any other 
information 
Polls and surveys 
Indexing 
Cataloging 
Solving problems 
Printing out results 
Maintaining LISTS, 
especially: 
MAILING LISTS 
SHOPPING LISTS 
ITEMIZATIONS 
STOCKLISTS 
PACKING LISTS 
Sales analysis 
Travel and route 

planning 
Scheduling 
Ticketing 
Distribution 
Editing 



Lists — Computers are lovely at working with 
lists. The nice thing is that you can change 
anything in the list — even one letter "B" for 
example — without affecting the rest. It's 
like a stored-away blackboard. As items become 
obsolete — the way they're always doing in a 
shopping list, say — you just tell your com- 
puter to "drop" them from the list. Your com- 
puter does the rest: YOU DON'T HAVE TO KEEP 
WRITING THE LIST OVER AGAIN. 

THIS GOES FOR ANY COLLECTION OF INFORMATION 
IN YOUR COMPUTER - YOU DON'T HAVE TO MAKE THE 
WHOLE THING OVER GUST TO CHANGE ONE PART. 

This makes your computer a powerful tool 
for such unexpected things as TEXT EDITING. You 
can work a whole manuscript over without having 
to erase or "fix" anything, physically. The 
time savings alone are immense — in writing, ed- 
iting, and composition! But imagine USING NO 
PAPER until you've got the final version ! 

With all this, your Personal computer adds 
up to two things: IMPROVEMENT AND EXPANSION. 
Improvement: Your computer will do FOR you what 
you're already doing, in a fraction of the time. 
Expansion: You do things with it you never 
could have before. 

Improvement — If you; re in mail-order, small 
business, or an office profession, a "micro" 
computer is for YOU! It can keep your mailing, 
li 8 t8 and print address labels at a rate of four 



per second, all accurate and up-to-date. It can 
store all your records on products, sales, cust- 
omers and ad results. It will compare or change 
any part of these you'd like, without touching 
the rest. In other words, it gives you SALES 
ANALYSIS and MARKET PROFILES which only "multi- 
millioners" have had until now! 

Your computer keeps inventories . 

It does accounting and billing of all typea 

It does order entry (live). 

It can hold and index your " own private 
library" of whatever information interests you. 

For example, it can help in health care by 
keeping track of each patient's medical history 
and alerting you to patterns you might have mis- 
sed. Or give you a quick way to look up the 
newest therapies by what they remedy — you type 
in the condition and your computer gives you 
back a list of indicated drugs or treatments. 

If you are a pharmacist: you may presently 
be keeping "card files" of each customer's 
contra-indications and other medication history. 
With a computer, you'd no longer have to look 
each of these up for each prescription! You'd 
just type in the customer's name and Rx, and UP 
would come the pertinent information on him! It 
would be shown on a little TV screen — just 
like at the airlines. You could also tell your 
computer to remember a list of "potentiating" 
drug combinations and warn you if it detects one 
in a customer's combination. YOU DON'T HAVE TO 
THINK IT OUT OR LOOK IT UP EACH TIME, ANY MORE. 

Your computer can run FLEXIBLE FORM LETTERS 
for you! You tell it to change this word or 
that, add or delete a paragraph, date a letter 
next Monday, and address it to, say, all the 
people in your "Best Prospects" file. OUT will 
come a stack of letters, individualized and 
ready to mail ! Because of "the '""add-on"" equip- 
ment which adapts computers for particular jobs, 
we arrive at your computer's greatest promise: 
expansion 



Expansion — You're about to see what new types 
of business are possible with a computer running 
in your own home! These are all high-profit, 
high-service businesses — yet they take little 
SPACE or TIME. Best of all, they're VERY low in 
STRESS! Because, let's face it, one of the 
chief causes of STRESS seems to be EMPLOYMENT. 
It's hard on both worker and boss . So why be 
either? GET A COMPUTER. 

Here are some new businesses which one per- 
son alone can set up with a computer. The first 
are all based on one thing computers do very 
well: INFORMATION-MATCHING! Basically this 
gives you a CLASSIFIED AD SERVICE - either gen- 
eral or very special (loke clothing only). And 
it can be "live", available right over the phone 
So, LIVE CLASSIFIED ADS are a very LIVE BUSINESS 
OPPORTUNITY! . It works like this: people call 
to say they want this or have that, and you tell 
'em who has or wants it. You do this by signal- 
ing your computer what's wanted. In a few 



WEST COAST COMPUTER FAIRE 



26 



BOX 1579, PALO ALTO CA 94302 



seconds it gives you a LIST of people who hav/e 
or want that thing! You read that to your 
caller. 

Your computer will display any desired de- 
tails you've given it in the past, as part of 
the list. The point is, YOU don't have to 
REMEMBER it all anymore. So your "data bank" 
can be much larger than you could ever handle 
mentally, and you're able to give far broader 
service. At the same time you're freed up for 
creative work! 

Moreover, some phone companies are learning 
to cooperate by "On-Call Billing" of calls to 
your Service number. The caller is simply 
charges a higher rate for calling that number. 
These charges are then forwarded or credited by 
the Phone Company directly to you. In other 
words, as a business you get paid when you're 
called . 

Where On-Call Billing isn't available yet, 
you can tie-in your fee with transactions, like 
the New York "BUYLINES" do. This is more work, 
but that's what your computer does anyhow. 

Some new satellites are making phone lines 
unnecessary, and getting clearer transmission to 
boot. Your "phone system" can become very pow- 
erful, with help like this. By "being in" with 
a system ahead of time, you can make the most of 
it. 

New Business — 

Real Estate - with up to the minute list- 
ings over a wide area. 

Dating Service - getting people together. 
With speedy, detailed descriptions that YOU 
don't have to look up! (Your computer will spot 
the most "ideal matches".) 

Apartment and Building Rental Service - 
where subscribers can find places for rent , or 
list places they have. There's a need for this 
kind of service, since real estate agencies are 
more interested in SALES. If you have an agency 
however, a computer lets you expand painlessly 
into rentals. With a computer you can make your 
service "long distance" too, using classifieds 
from other cities. 

Swappinq Service - You put people in touch 
with each other, who need and have things they 
want to trade. Instead of money, they give you 
"due bills" which you charge 10$6 each on. These 
act as "certificates" for exchanging the goods 
or service. For example, you know a dentist who 
wants a used car; and a car dealer who wants his 
house painted. Your COMPUTER completes the cir- 
cle: it displays the name of a painter who 
needs dental work! You have due-bills from each 
already, and just put the people in touch. And 
you get paid with each due-bill — so it doesn't 
matter to you whether they go ahead with the 
swap or not. 

Equipment Rental Service - here your com- 
puter merely keeps tabs on who has equipment 
they are willing to rent, and of who wants to 



rent some. Again, YOU DON'T HAVE TO STOCK ANY- 
THING. Furniture, housegoods, and even cars can 
be rented. 

Shopper's "Where To Find It" Service - this 
is like a detailed "Department Store Directory" 
available by phone. Your computer keeps track 
of what stores carry which items, and prices too 
if you wish! You can also notify of specials 
and sales. 

Instant Babysitting - you run a "register" 
of babysitters who are available on short notice 
This can be used for many other types of jobs 
and services too, of course. 

"Phone Rummage" Sales - Like a rural ver- 
sion of the What's For Sale service. The big 
items can even be cataloged into your system, so 
callers can ask, say, for a piano and you'll 
know where one's for sale. This can be applied 
to flea markets, too. 

Clothing Clearinghouse - this answers an 
acute need. Everybody — especially females 
and children — had a predicament until now: 
they need different nice things to wear, and 
they have good clothes they don't want. Yet 
they're unable to sell or find a used thing ! 
(if you'd seen the pennies a store offers you 
for a perfectly good $300 gown you've worn once, 
you'd see why!) This is a natural for your com- 
puter. You just keep pumping it full of the 
clothing descriptions and clients' names and 
phone numbers, and your computer will find every 
match there is! - even down to desired color and 
size! After you've brought two parties together 
they can work out any terms they wish about the 
clothing. You get paid by the phone company, or 
by clients for the numbers you give them. You 
DON'T HAVE TO KEEP ANY CLOTHING ON. HAND. You 
need NO SPACE and NO MERCHANDISE to conduct this 
business. 

Now for some businesses that are NOT of the 
"INFORMATION MATCHING" type. Notice that these 
still take almost NO SPACE to operate. 

Service Bureau - doing small business work 
for other people or firms. Accounting, billing 
payroll, mailings, correspondence, taxes and in- 
ventory are top candidates. You can do for 
others , anything -we've named so far. 

Answering Service - fully automated. We 
think that with a little ingenuity you could run 
a whole answering service using nothing but a 
phone and your computer. I mean, go off to the 
Health Club while your computer routes messages 
all day! 

Calling Service - Your computer, properly 
rigged, can do much of your routine phone cal- 
ling for you. You can even tell it to call 
someone from across the room! (And IT will 
remember the number - all you have to know is 
the name). Some people will use a computer to 
place automatic "buy-sell" orders on the stock 
market or commodities. You could be earning in 
two places at once! You'd be at your job or 
business, while your computer is playing the 



WEST COAST COMPUTER FAIRE 



27 



BOX 1579, PALO ALTO CA 94302 



stocks for you! 

Horoscopes - your computer can cast horo- 
scopes, and then print them out for you to sell. 
It's able to mix "individual" information such 
as birthdate and place, with the "mass" informa- 
tion about astrological types. (You choose and 
give it the "mass" information ahead of time. 
It can then print out horoscopes in as many cop- 
ies as you wish, with even the peoples* names 
and addresses on them for mailing. You see such 
horoscopes advertised nationally. Those ads net 
hundreds of thousands of dollars ! 

Tarot Readings - this is the same idea as 
horoscopes, only the "general" information you 
give your computer beforehand is from books on 
the Tarot instead of astrology. Your computer 
would "draw" the cards for you! Tarot readings 
are just getting popular, and more novel to the 
public than horoscopes. You could see them 

well! 

Writing Service - your computer is the best 
Assistant Editor anyone ever had. How it saves 
TIME! And PAPER ! More on this in a moment. 

Classified Bulletin - publish it monthly or 
bi-weekly. It has nothing but classified ads of 
all kinds. The ads are run FREE and people pay 
you when there's a sale. This sounds risky, but 
for many reasons, IT WORKS. The Classified Bul- 
letin is a much better deal for people than the 
newspaper — all you need is adequate coverage. 
People's ads run longer, run free , and cover 
better geographical area. You could be running 
a "live" classified service and a printed ver- 
sion, at the same time. Each serves as public- 
ity for the other. You could also support your 
classified bulletin with paid ads from local 
businesses. 

-Other new businesses possible, with your 

computer: 



"Local Events Calendar 

Reservations Service 

Opinion Polls and 
Surveys 

Lottiers and other 
Fortune Games 

Betting Systems - win- 
ning at horses, black- 
jack, etc. It can be 
done, in fact it IS. 
And there are some 
books on it. 

Gold Handicapping 



News Service 

Ticketron 

Problem Solving for 
others 

Special Interest Clubs 

Selling Time on your 
computer. You charge 
other people for 
using it. 

Your Own Publication - 
magazine, classified, 
or newsletter, edit- 
ing with the computer. 



You're getting an idea of your computer's 
business uses. We bet you'd also like to know 



How a Computer Can Help You in Your Home 

Now with all of these uses, you must be 
starting to guess what one of these "mighty 
midgets" can do in your home! First: you can 
have everything controlled automatically, whe- 
ther you're there or not. 

Your home computer can literally become 
your "private secretary". Make you feel like 
the President, as it keeps track of notes, dates, 



reminders, appointments... It will alert you at 
the right time — give you a message that 
"school's letting out early today," or that So- 
and-so's coming to visit, or that you have an 
appointment downtown at 2:00. Keep lists, bal- 
ance your checkbook, be a library, manage your 
finances and answer the door. YOUR MIND GETS 
UNBURDENED — a computer's really useful for thati 
Maybe even prevents wrinkles , if those come from 
feeling harassed!!! 

Right now, you'll "tell" your computer what 
you want by typing messages on its keyboard. 
Don't worry how it "understands" them. It does. 
You just type your instructions, and it'll do 
the rest. 

Now you'll even be able to SPEAK your com- 
mands to it, and it will carry them out! For 
example, there's an alarm clock on the market 
right now that stops ringing if you yell at it. 
(If you just groan or talk, it rings less.) And 
it recogni es YOUR voice — no one else's! 

Any electrical device can be set up to do 
this. We've always liked the idea of LIGHTS 
that keep themselves on only when someone's 
around . (You wouldn't have to talk to them, 
they'd know you were there by your temperature.) 

As each of these technical devices comes 
onto the sales market, you'll be ready. You can 
just ADD them to your system. 

Your computer can also help with home pro- 
tection . It's hard to beat a trained attack dog 
of course. But he can't call the Fire Depart- 
ment if he smells smoke, or signal your "beeper" 
when the baby wakes up. And you don't have to 
ualk your computer. For burglary, as a matter 
of fact, a little machine is planned that you 
attach to your door. It's activated while you- 
.. re. .awayj. to SOUND like _a_ fero ious dog roaring 
and hitting the door, if anyone starts tampering 
there. Your computer can do even better, espec- 
ially if you have a Hi-Fi set. 

It could even be wired to water plants or 
feed fish. 

AT HOME AS IN BUSINESS, your computer's 
YOUR PARTNER IN JUDGMENT!! And IT HELPS WITH 
ALL KINDS OF PLANNING. You can do budgets, 
schedules, and calendars, party management, in- 
ventory, and keep your own "mailing lists" and 
phone directory. You can do super MENU-PLANNING 
with a computer, too. It tells you what's in 
the refrigerator, what you're out of, what needs 
using up, and what you'll need to buy for a cer- 
tain recipe. Or it tells you what recipes you 
can do with what's on hand. Frankly, all this 
would be a big order for your little computer at 
present. But it's coming (Also, the longer 
you spend with your system, the more versatile 
it gets.) 

Remember how easily your computer handles 
LISTS. Well, you can add or delete items all 
week, and review it anytime you want. Only 
those items you changed will be different. And 
the rest of the time your lists are tucked away- 
safe and CLUTTER FREE! 



WEST COAST COMPUTER FAIRE 



28 



BOX 1579, PALO ALTO CA 94302 





■ Now more on TEXT EDITING, because it's so 
I ue.ll suited to WORK-AT-HOME! (The sources of 
I editing work to do at home are so varied that we 
I won't go into them here. The commonest is TYP- 

■ ing, of course.) 

I You type your material into the computer, 
| which "stores" it in its memory. Then you call 

up the material section by section, and work it 
over. YOU USE NO PAPER. You don't have to 
erase, or "fix", or buy correction fluid. You 
don't have to make carbons. Any change you call 
for is made instantaneously. After the work is 
EXACTLY THE WAY YOU WANT IT, you press the 
"PRINT" button. THEN your system spits out fin- 
ished pages. The newest systems do this a whole 
page at a time , and silently like a Xerox. 

Something else your computer can do for you 



Indexing 

We don't know if you're into indexing or 
not. Some are, some aren't. If you have a lot 
of ideas or keep a diary or want to sav/e clip- 
pings and the like, thouch, INDEXING is for you. 



flair — just like programming. So, you mightn't 
have guessed what fun for YOU lies hidden in a 
computer! 

NOW. . . your home computer can act as Door- 
man, Guard, Secretary, Librarian, Mother's 
Helper, Consultant, New Business Partner, Com- 
panion, and just general Unpaid Labor Force. 

But bet you never thought of it as an 
ENTERTAINER! 

You're hearing a lot about "TV Games" for 
this Christmas. They're just "little black 
boxes" you hook up to your TV. You play games 
with them through a little keyboard, using the 
TV screen as a "display". 

Know what those "little black boxes" are? 
They're microcomputers, that's what! Someone 
else has programmed them, is all. 

Music 

One of personal computing's greatest pro- 
mises is in MUSIC. Imagine yourself going to 
your piano or organ, and playing as slowly as 
you wish ! ...Maybe one finger at a time, or 



It makes a compact filing system, ready to go — making it up as you go. All the while, your 



and your computer's the one to do it! It will 
keep track of all the headings, key words, page 
or issue numbers, and the alphabetizing of 
everything. Here's how it works, basically: 
Say you have a clipping or an idea you want to 
"index". Say it's about a car that runs on sun- 
power. You just tell your computer the key 
words it's about - like FUELLESS CAR - and 
then tell your computer where you've put the 
writeup on it. Like, "file of October '76, Item 
Number 4." 

Then, say a few months later you want to 
look up the article again. You just tell your 
computer the KEY WORDS - type in FUELLESS, CAR - 
and your computer tells you exactly where to 



computer is "listening". It's remembering 
every note. (And no-one else has to hear you., 
you can wear headphones!) 

When you're finished with your "composit- 
ion", you tell your computer "play it back - to 
tempo". Your computer has the piece played 
back, as fast as you want it to go . 

There you are — you've made your own player 
piano or "player organ"! And what's it playing? 
YOUR piece! Speak of ENTERTAINMENT—!! This is 
an indescribable experience, if you've always 
longed to make music, but never got the chance. 
A COMPUTER IS YOUR CHANCE TO MAKE MUSIC, AT LAST 
— WITHOUT HAVING TO PLAY!! 

Present-day organs are moving in this di- 



look for the writeup! (Yo< might have collected rection, but they still require a lot of skill . 



several items on this subject. Your computer 
would then tell you about all of them.) It's 
like your own private library. 

If you'd collected a lot of other material 
on cars, then you could see it all by just typ- 
ing in "CAR". Or maybe you're interested in 
anythinq that runs without fuel. Then you'd 
just type in FUELLESS, and get back more than 
cars. See? 

INDEXING is like a great scrabble game. 
It also tends to make you smarter, for some 
reason. (Certain studies prove this.) Maybe 
that's because indexing develops both your 
logic and fine judgment at the same time. 

There are several ways in which indexing 
can be built into a business . Cutting and sel- 
ling newspaper clippings is who's likely to pay 
most for what subjects. Likewise, which publi- 
cation. Your computer does a superb job of 
this. Another business possibility is abstract- 
ing the literature in a given field. The ab- 
stract can be sold, and so can the indexes! 

Some people just "take" to indexing - it's 
another one of those areas for unpredicted 



You have to be able to "keep up with the 
rhythm", for example. With your own computer, 
you won't have to: the rhythm keeps up with 
you! 

How Your Organization Can Use a Computer 

A computer can be a real asset for a SMALL 
ORGANIZATION. It's indispensible in event 
planning, maintaining calendars and schedules, 
bookkeeping, assigning and tracking committee 
work, reporting, calculations, issuing ads and 
announcements, doing memos, and keeping the 
minutes. 

These can all be INDEXED to let you find 
the exact material you were thinking about, 
stored in the computer four years ago! 

Your computer is also the center of atten- 
tion at social events, as it handles ticketing, 
door prizes, drawings and countless crowd-parti- 
cipation games. Imagine the attraction THAT is 
with you as the sponsor! 



School 



Speaking of community, what if you took 



WEST COAST COMPUTER FAIRE 



29 



BOX 1579, PALO ALTO CA 94302 



computer like this to SCHOOL? It could make you 
a hero. And since you programmed it, of course, 
it's ready to do whatever you planned. 

As a teacher you could use it as a TUTORIAL 
AID and to do INSTANT GRADING, for example. 
Perhaps above all, you could use it to TEACH 
PROGRAMMING. And the students would have to 
write programs to DO something, so they start 
coming up with interesting applications. (Again 
programming boosts mathematical ability — it's 
not the other way around, as often supposed.) 
The kids find themselves exposed to possibili- 
ties like all these we're talking about. They 
catch on quick what to do with them! 

Perhaps one of the most important things 
kids can discover is how to earn a living in a 
way that feels creative to them. And again we 
see the LITTLE computers playing a BIG part in 
exactly this discovery! 

Meanwhile, the little computer can help 
with HOMEWORK. And it can feature in all sorts 
of projects and reports, ones that get writeups 
in local papers. This often happens with stud- 
ent computer projects, because they tend to be 
so original. Also, one student can do the work 
of many, this way. And likewise, many scien- 
tific projects become possible with a computer, 
which were impossible before. 

VI The Next Step 

Where do you go from here? Well, my sug- 
gestion is more reading. Take what I have given 
you today and expand on it. There are a number 
of books out in publication now that will enable 
you to understand better all this that is going 
on and in much more expanded form than I have 
done. 

Make use of your local computer store! The 
owners and operators are more than willing to 
give you more of an understanding and help you 
over the hard bumps of decision-making process 
of which one to buy and what to hook up to it. 
Also look into classes at your local high 
school and college. There are any number of 
classes to take to further your knowledge in the 

field. 

As a final note, remember: Computers are 
not just for geniuses, you don't have to be a 
special gifted person to own or operate one. It 
is a tool that you can use, that will help in 
every day life. 



WEST COAST COMPUTER FAIRE 



30 



BOX 1579, PALO ALTO CA 94302 



ELECTRONICS FOR THE HANDICAPPED 

Dr. Robert Sliding 

Research Director for the Digital Group 

Box 6528 

Denver, Colorado 80206 

Abstract: "Handicapped" can refer to either physically impaired 
or mentally impaired. There is a need for individual hobbyists to be- 
come involved in aiding these handicapped people. Present technology 
supports a large number of exciting applications. Hobbyist magazines 
are begging for articles on how to implement systems for the handicap- 
ped. An international organization of hobbyists interested in handi- 
capped applications was formed at PCC 77(Atlantic City Convention). 
For more information or to join contact: 

Computers for the Handicapped 

c/o Warren Dunning 

5939 Woodbine Ave. 

Philadelphia, PA 19131 



WEST COAST COMPUTER FAIRE 31 BOX 1579, PALO ALTO CA 94302 




Reprinted from People's Computers 
1263 El Camino RmI 
Manlo Park, CA 94025 



MICROCOM^ER 
COMMUNICATION 



g^ .i _<■»«.. *? 



for the 

HANDICAPPED 



By Tim Scully 



This article is more technical than many 
published in People's Computers, but we 
believe that the general discussion will 
be interesting, informative, and thought 
provoking to all, even those who choose 
to skip the program listings and discus- 
sion. 

Tim Scully has been designing biofeed- 
back equipment and doing biofeedback 
research for many years. Tim is a Re- 
search Fellow of the Humanistic 
Psychology Institute; he is now working 
towards his doctorate in psychology. His 
dissertation project involves researching 
and developing biofeedback systems and 
techniques for use in drug rehabilitation. 

Tim is also teaching a computer class to 
fellow inmates at a Federal penitentiary. 
Although prison resources are scarce and 
he is not allowed to solicit donations, he 
is hopeful of somehow eventually acquir- 
ing a computer system for the prison. 

The potential of microcomputers as tools 
for the handicapped is enormous and 
exciting: we encourage dissemination of 
such information. For this reason we are 
making copies of this article available. 
To receive a reprint, send a stamped, 
self-addressed envelope (24t for business 
size, 35^ for 8% by 11 inch) to People's 
Computers. 



How would you communicate if you 
couldn't talk, didn't have the use of your 
hands, and could only somewhat control 
the movements of one knee? This is the 
problem which Robin, a young lady in 
her 20's has lived with all her life. She has 
cerebral palsy. 

I met Robin in 1976, and this is the story 
of how a microcomputer communication 



system came to be built for Robin. The 
general concepts applied in the develop- 
ment of Robin's communication system 
may prove helpful in the development of 
microcomputer systems for other handi- 
capped people. 

When I first met Robin, her communica- 
tion was accomplished by use of a word 
wheel. She could understand speech and 
she could read, but she needed help in 
'talking'. Her word wheel was made from 
an electric clock motor and a bicycle 
spoke, with the bicycle spoke attached 
where the second hand of a clock would 
normally be mounted. A sheet of card- 
board was mounted behind the spoke, 
with the letters of the alphabet on it, 
arranged in a circular pattern. The spoke 
pointed to the letters, one at a time, as 
tt r otate d. Robin could move her knee 
to one side and hit a kneeswitch mounted 
on her wheelchair, thus stopping the 
motor so that the spoke would freeze, 
pointing at the letter she had chosen. 

The spoke rotated at one revolution per 
minute, so spelling proceeded at about 
one letter per minute! The person Robin 
was conversing with often had to write 
the letters down, to keep from forgetting 
them, as a message slowly built up. 
To speed up the communication process, 
a few words were written next to each 
letter of the alphabet, so that when the 
spoke stopped it would point at a group 
of words as well as a letter. The person 
with whom she was conversing would 
have to guess which of these Robin 
intended. It took considerable patience to 
hold a conversation with Robin, and not 
very many people took the time:- 

When I first saw Robin's communication 
system, I thought of replacing her word 
wheel with a microcomputer and video 



WEST COAST COMPUTER FAIRE 



32 



BOX 1579, PALO ALTO CA 94302 



display, using a vocabulary of words 
stored in the computer's memory in place 
of the sheet of cardboard. A little over a 
year later, that system now exists and is 
being installed on Robin's wheelchair. 

HOW IT WORKS 

The present system is an expansion of the 
word wheel concept which uses a TV 
display with 1 6 lines of text. The top line 
is reserved for the display of a 'menu' 
of items (words, letters of the alphabet, 
punctuation symbols or control codes) 
from which Robin can choose. The 
second line is kept blank and the bottom 
14 lines provide space for the display of a 
message of about 200 words. 



As items are displayed on the menu, 
Robin can choose one by hitting the 
kneeswitch mounted on her wheelchair. 
In some modes of operation several items 
will appear on the menu at once, in which 
case the item at the left is the current 
item, the one which can be selected by 
hitting the kneeswitch. 

On start-up, the system blanks the TV 
screen and then offers the SPELLING? 
mode by putting that word on the menu. 
This item remains on the menu for a 
time 'Tl' (an adjustable time delay). If 
the kneeswitch is hit during that time, 
the SPELLING? mode is entered, other- 
wise the next menu item is displayed: 
PUNCTUATION?. If that item isn't 
chosen either, after another delay equal 
to Tl, then the system will begin 
displaying the names of groups of words: 
A-BONE, BOOK-CROWN, CRY- 
FINGER, FINISH-HIDE, HIGH-LOT, 
LOUD-OUGHT, OUR-ROSE, ROSE 
ANN-STAY, SQUARE-TWENTY and 
TWO-YOURSELF, one group at a time. 
Each group of words contains about 
120 words in alphabetical order. The 
name of each group is made up from the 
first and last words in the group. 

If Robin doesn't pick any group of 
words, the computer then offers an 
ESCAPE? from the groups of words. If 
this isn't chosen, the names of the groups 
are offered again. If the ESCAPE? is 
chosen, the system returns to near the 
beginning of the program and offers 
SPELLING? again. This ESCAPE? to the 
beginning is offered from every mode of 
system operation. 



If Robin does pick a group of words, 
HIGH -LOT for example, then the names 
of subgroups in that group begin being 
displayed, one at a time: HIGH -HONOR, 
HOPE -HUNT, HURRY -IMPORTANT, 
IN -INTERESTING, INTO-I'VE, JEN- 
NIFER-JUMP, JUST-KISS, KITCHEN- 
LAKE, LAND -LEAST, LEAVE -LIE, 
LIFE -LITTLE, LIVE -LOT and then 
ESCAPE?. If Robin picks a subgroup, 
such as LEAVE- LIE, then the words in 
that subgroup are displayed across the 
top line of the TV, with two spaces 
between each word: 
LEAVE LED . . . LIBRARY LIE 



If Robin hits the switch at this moment, 
LEAVE will be transferred down to the 
first available space in the message 
area of the TV screen and the menu 
will begin all over again by offering 
SPELLING?. If the first word, LEAVE, 
isn't chosen, then after the usual time 
delay Tl, the list of words on the menu 
will shift one to the left, so that LED is 
on the extreme left and it becomes the 
current item. This process continues 
until a word is chosen or until the end 
of the subgroup, LIE. If LIE isn't chosen, 
ESCAPE? is offered, and if it isn't 
chosen, the complete list of 1 1 words in 
the subgroup is displayed across the menu 
and the cycle begins again. 

By this system of groups of words, 
subgroups, and finally words, it is 
possible for Robin to look through a list 
of 1200 words in a short time, find the 
one she wants and add it to a message she 
is assembling on the TV screen. The 
computer automatically adds a space 
after each word chosen, so it isn't 
necessary for Robin to worry about 
spacing between words— she can just 
choose one word after another. All letters 
and words are upper case, so she doesn't 
have to shift. 

When a sentence is complete, and when 
she wants punctuation symbols, Robin 
can select the PUNCTUATION? mode. 
The first item offered on entering this 
mode is CONTROL? and if that isn't 
chosen, then after the usual time delay, 
the punctuation symbols will be spread 
across the menu in much the same way 
that the words in a subgroup were 
displayed: 
.'?;:!012...9#$ %&()* + - 



These items leave the screen at the left, 
one at a time, if they are not chosen. If 
one is chosen, the computer backspaces 
once (to undo the automatic spacing) and 
adds the chosen symbol to the message 
on the screen. Then the system starts over 
by offering SPELLING? again. 

The CONTROL? mode offers Robin a 
few useful commands, one at a time, if 
it is chosen: BACKSPACE?, ERASE 
LAST WORD?, SPACE?, ERASE 
SCREEN?, and NEXT LINE?. These 
control codes operate immediately if 
selected. Then the system starts over by 
offering SPELLING? again. 

The SPELLING? mode exists to allow 
Robin to spell words not found in the 
1200 word vocabulary stored in the com- 
puter's memory. To speed up the process 
of spelling, letters of the alphabefcare not 
offered in alphabetical order. Instead 
they are offered in the order of their 
probability of use in English. Except 
at the beginning of a word, the likelihood 
of a letter appearing in a word depends 
on the last letter chosen .t If we are in 
the middle of a word, and the last letter 
chosen was 'A', then the most likely 
next letter is 'E', the second most likely 
is 'B', etc. 

Robin's system has 27 different alphabets 
stored in it. The first alphabet has the 
letters organized so that those most likely 
to appear at the beginning of a word will 
be displayed first. This is the alphabet 
which appears when the SPELLING? 
mode is first entered. The letters are 
spread out along the menu line as usual, 
with the first offering on the left. If no 
letter has been chosen by the time all of 
them have moved off the screen to the 
left, the usual ESCAPE? offering is made 
and the alphabet redisplays. 

If a letter is chosen, it is added to the 
message area of the screen, and ESCAPE? 
is offered on the menu. If Robin decides 
to stay in the spelling mode, the 
computer then displays one of the 26 
remaining alphabets— which one is deter- 
mined by the letter she just chose. 
When she picks a letter from this new 

t Mr A Ross Eckler suggested the bigram spel- 
ling scheme used in Robin's system. He supplied 
me with letter use frequency tables which he 
credited to F Pratt, Secret and Urgent: The 
Story of Codes and Ciphers, Blue Ribbon 
Books, 1942 pp 258-259. 



WEST COAST COMPUTER FAIRE 



33 



BOX 1579, PALO ALTO CA 94302 



alphabet, it is added to the message, 
immediately after the first letter (the 
system automatically backspaces to undo 
its automatic spacing). This process 
continues until she has completed 
spelling a word. Then she picks ESCAPE?, 
which returns her to the beginning of the 
program, which offers the SPELLING? 
mode, and a space is left after the word 
she has just completed. 

This spelling scheme allows comparatively 
rapid spelling of words because Robin 
only has to wait for a few letters to 
display before the one she wants is likely 
to become the current item. The 
automatic spacing also speeds up 
communication. 

Now that we've looked at what Robin's 
system does, let's examine the hardware 
and software which do the work. 

SYSTEM DESIGN 

Robin's system was designed around the 
special limitations of her situation and 
my own situation. I met Robin through 
a United States Probation Officer, who 
was supervising me while I was tempo- 
rarily free on appeal bond. I was waiting 
for the Court of Appeals to decide if it 
would uphold my conviction for conspir- 
acy to manufacture LSD (back in 1968 
and 1969). As it turned out, the Court 
did uphold my conviction, and I'm now 
serving a 10 year Federal prison term 
at McNeil Island Penitentiary in 
Washington. 

My personal problems limited the system 
design to the use of a commercially 
available computer kit because of the 
difficulty of sending materials into prison. 
Robin's family had only a limited budget, 
and Robin's capabilities formed the 
remaining design limits. 

In 1976, the budget we had (about 
$1,300) was just about enough to buy a 
computer kit with keyboard, cassette 
tape system, video monitor and 8K of 
memory, so this is the size system we 
planned on. The average word in English 
is about 5.5 characters long and we 
initially planned on a vocabulary of about 
1,000 words, which uses up 5,500 bytes 
of memory. This left about 2,500 bytes 
for the program to control the system 
together with storage for spelling and 
punctuation symbols. 



That's not enough memory for the use 
of a high level language such as BASIC, 
so the program had to be written in 
assembly language. Since my previous 
assembly language experience was with 
the 8080A, this was the CPU chosen for 
Robin's system. 

We wanted the system to be expandable. 
In the future, Robin may want to add 
more memory, a printer, a speech synthe- 
sizer or other additional peripherals. 
For maximum flexibility in expansion, 
the S-100 bus structure was chosen 
because of the wide range of commer- 
cially available plug-in circuit cards. 
The computer also had to be small and 
light enough to mount under the seat 
of Robin's wheelchair. In order to modify 
the menu and message areas of the video 
display independently, the computer 
needed a memory-mapped video display. 
These constraints pointed us toward the 
Polymorphic Systems' Poly 88 System 4 
kit. 

The Poly 88 uses a 5 slot S-100 chassis, 
which makes it small and fairly light in 
weight. The Poly video card is memory 
mapped and displays 16 lines of 64 
characters each-just right for Robin. The 
features of the Poly CPU card were also 
useful: it has 512 bytes of RAM together 
with a monitor program in ROM. A 
cassette tape interface card works 
together with tape loading software in the 
monitor ROM to handle program storage 
and loading. 

The vocabulary for Robin's system is 
stored in RAM because we expect her 
vocabulary needs to change once she can 
communicate more freely. The problem 
with storing vocabulary in RAM is that 
RAM is volatile— the memory and thus 
the vocabulary are erased every time the 
computer is unplugged. So a battery 
back-up card was added to the system. 
This card keeps the program and vocabu- 
lary stored in RAM even though the 
computer may be unplugged for hours at 
a time while Robin's wheelchair is moved 
from place to place. Robin's computer 
uses the Seals Electronics BBUC card 
with NiCad batteries. 

We had, at one point, considered battery 
powering the entire system, but ended up 
rejecting the idea. A large and heavy 
battery would have been required for 
reasonable life, and this would bring the 



total weight of the wheelchair and system 
up so high that Robin's mother wouldn't 
be able to lift it in and out of their family 
van for trips to school and other errands. 
As it is now designed, Robin's system has 
to be plugged into a wall outlet to 
operate, but the battery back-up card 
keeps memory alive while the system is 
unplugged so that it is instantly ready 
to start upon being plugged in. 

HARDWARE MODIFICATIONS 

A few additions and modifications were 
made to adapt the commercially available 
hardware to Robin's application. The 
Poly 88 chassis has only two controls: an 
on/off switch and a reset pushbutton. 
This is because it is designed to use a key- 
board for functions which a control panel 
might perform. The reset pushbutton 
starts the ROM cassette tape loading 
program. I added a second pushbutton 
which activates a vectored interrupt and 
jumps to the beginning of Robin's pro- 
gram. This makes it possible to start up 
Robin's system without the keyboard. 
A schematic for this simple addition 
is shown in Figure 1 . 




Figure 1 

As a computer powers down, it can 
scramble data stored in memory by 
sending out false write commands. To 
eliminate this problem, the memory in 
Robin's system was partitioned so that an 
8K block of RAM, containing the main 
program and stored vocabulary, could 
be write protected. This left only the 
512 bytes of RAM on the CPU card 
unprotected (and the memory mapped 
video display, of course). The small 
CPU RAM area is used for all scratchpad 
functions and is one of the features of 
the Poly CPU card which encouraged 
its selection. 



WEST COAST COMPUTER FAIRE 



34 



BOX 1579. PALO ALTO CA 94302 



-@ 



74 LS 

, , _ 00 

CM>-®LZ6 

+MWRITE 




MWR- (PIN 3, ALL 21 L02's) 



100 pF -^r 



Figure 2 




43~ > > DI7 



SINP | 46 
A15 | 32 > Q 



Figure 3 



The RAM card used in Robin's system is 
an Industrial Microsystems IuS #000231 
8K card which uses 21L02-4 chips. This 
card was modified slightly so that a 
toggle switch could be added to the 
computer's front panel which protects/ 
unprotects the main 8K RAM. When 
loading new programs from cassette 
tape, RAM is unprotected. Otherwise it 
is protected. A schematic of this circuit is 
in FiguiC 2. 

The final hardware modification for 
Robin's system was the addition of an 
input port for her kneeswitch. Figure 3 
shows the schematic for this circuit, 
which was built on a small scrap of 
Vectorboard and mounted on the Poly 
88 chassis. 



SOFTWARE DESIGN 

The program for Robin's system is listed, 
with comments, on the following pages. 
It was kept as brief and simple as possible 
to leave as much space in memory as pos- 
sible for the storage of vocabulary. The 
vocabulary is stored as ASCII, with one 
;haracter per byte of memory. ASCII 
doesn't use the eighth bit of an eight 
bit word, so I used the eighth bit as a 
'beginning of word' flag. The first charac- 
ter of any character, word or phrase 



stored in memory has the eighth bit true, 
and all following characters (if any) have 
the eighth bit zero. This scheme allows 
the words in Robin's vocabulary to be 
packed tightly in memory. The only 
extra bytes of memory used are flags 
inserted at the end of each subgroup 
(FDH), group (FEH) and at the end of 
the vocabulary (FFH). 

The main program uses one subroutine 
from the Poly 4.0 monitor ROM. That 
routine, WH1, outputs a character to the 
video display. It uses a location in the 
CPU board RAM, POS, to store the next 
position it will print into and it recog- 
nizes several control codes: 
0DH = carriage return and line feed 
0CH= erase screen and send cursor home 

(upper left corner of screen) 
0BH=send cursor home without erasing 

screen 
18H= erase current line 

The starting address for the memory area 
mapped by the video display is F800H. 
Thus, if the control code 18H is in the A 
register when WH1 is called, it will stuff 
F800H into POS. WH1 saves all registers 
on entry and restores them on exit. 

The monitor ROM on Robin's CPU board 
is a slightly modified version of the 4.0 
monitor: at address 0008H a JMP 2000H 



has been inserted so that vectored inter- 
rupt VI6 jumps to the start of the main 
program. This allows a single pushbutton 
to start Robin's system. 

Robin's software was hand assembled 
because I didn't have an assembler 
program to run on her system. The pro- 
gram listings were typed by hand and 
may contain a few errors. 

TEXT AND EDITOR PROGRAMS 

The TEXT and EDITOR programs written 
for Robin's system are both very short. 
TEXT was used to enter the messages, 
alphabets and vocabulary into her 
system's memory from the keyboard. 
EDITOR is used to modify her vocabu- 
lary and to add to it after the original 
entry. Here is what they do in detail. 

TEXT is entered with a starting address 
in HL. The TV screen is erased^ and the 
system waits for text to be entered from 
the keyboard. Any unshifted letter is 
printed on the TV screen as a lower case 
letter but is stored in memory (beginning 
at the starting address in HL) as upper 
case ASCII with the eighth bit zero. The 
keyboard for Robin's system is a 
Teletype -like keyboard and does not 
have lower case letters, so the 'unshifted' 
letters are actually upper case, but TEXT 
translates them for display purposes. 

Any letter of the alphabet typed while 
the CTRL key is held down (except Z) is 
printed on the TV screen as a capital 
letter and is entered into memory as 
upper case ASCII with the eighth bit 
turned on. This allows the first letter of 
any word or phrase to be identified. The 
Poly monitor program uses CTRL Z as 
a command to enter its front panel mode, 
so this is the one exception to the rule 
stated above. Shift O jumps to the 
EDITOR program, at the current address. 
Rubout erases the last character entered. 

TEXT is also capable of inserting the 
control codes which identify the end of 
alphabets, subgroups and groups. 
CTRL shift L = insert FBH 
CTRL shift N = insert FDH 
CTRL shift O = insert FEH 

EDITOR is a somewhat longer and more 
complex program which allows the user 
to examine the text stored in the system's 
memory. It also allows modifications of 



WEST COAST COMPUTER FA1RE 



35 



BOX 1579, PALO ALTO CA 94302 



J 







that text by insertions and deletions. 
If a deletion is made, all of the rest of the 
text (at addresses greater than the deleted 
address) is moved down one memory 
location to close the gap. If an insertion is 
made, all of the rest of the text is moved 
up one location to make room for the 
addition. 

EDITOR is entered with a starting 
address in HL. Upon entry it will display 
a 'line' of text, beginning at that address. 
At the left end of the line, the current 
starting address will _ appear, in hex, . 
followed by a space. Then the contents of 
memory are printed, up to and including 
the first 'control code' found. Any letters 
stored in memory with the eighth bit 
high will print on the TV as capitals, 
while those with the eighth bit low will 
print as lower case. The control codes 
will print as special symbols: 
FBH = { FDH = } FEH = ~ FFH = ■ 

The EDITOR recognizes several com- 
mands, as listed below: 
carriage return = display next line 
line feed = display previous line 
space = redisplay the current line, shifted 
one character to the left 
NOTE: insertions made by EDITOR 
will go just in front of the first 
character on the display. The space is 
used to move along the current line so 
that insertions (or deletions) can be 
made in the middle of a line. 



Shift = jump to TEXT with HL equal 

to the starting address of current line. 
CTRL shift L = insert capital L 
CTRL shift M = insert capital M 
CTRL shift O = insert FEH 
CTRL shift N = insert FDH 
rubout = delete first character of current 

line 
any unshifted letter = insert that letter 

with eighth bit low 
CTRL any letter except L, M, or Z = 

insert that letter with eighth bit high. 

The EDITOR, and TEXT programs use 
several more subroutines from the Poly 
4.0 monitor ROM. Either program is 
entered with a starting memory address 
in HL. The monitor program allows 
register pairs to be pre-loaded from the 
keyboard while it is operating in the 
'front panel' mode. For a detailed expla- 
nation of this procedure, see the Poly 
system manual Volume 2 p58-65. The 
other subroutines used are: 
WHO = fetches a character from the key- 
board and returns it in A. No other 
registers are affected. 
DEOUT = print the two byte number 
in DE as a four character hex number. 
MOVE = move — BC bytes from the 
area starting at (HL) to the area 
starting at (DE) — only works for 
moving to lower addresses. 

Robin's main program turned out to be 
shorter than expected. Including the 



alphabets and punctuations symbols, it is 
1250 bytes long. Even with 1,200 words 
of vocabulary in memory, there is still 
room for TEXT and EDITOR to remain 
in memory so that Robin's family can 
revise her vocabulary as needed. 

A FEW WORDS ABOUT WORDS 

It may be helpful to briefly mention how 
the initial vocabulary for Robin's system 
was chosen. The first 1,100 words were 
supplied by Robin's tutor, from lists of 
the first words taught in English. The 
remaining words were chosen by Robin 
and her family. These include the names 
of people, places, articles of clothing, 
foods and other objects which Robin 
comes in contact with. 



As practical experience with the system is 
accumulated, revisions may be made in 
the initial vocabulary and possibly in the 
main program. For example, it may turn 
out that Robin will feel more comfort- 
able spelling words than looking them up 
in the stored vocabulary. If this is the 
case, we may try adding a set of look-up 
tables for prefixes, roots and suffixes to 
speed up communication. 

FUTURE DIRECTIONS 

The basic system built for Robin can 
be expanded and modified to fit a wide 
range of possible situations. For example, 
the kneeswitch could easily be replaced 
by an elect«>myog«ph(EMG), an instru- 
ment which measures the electrical signals 
associated with muscle tension. An EMG 
can easily detect levels of muscle tension 
which are too weak to control a switch 
mechanically. This is a practical alterna- 
tive to the kneeswitch for people who are 
only capable of very limited movement, 
such as an eyelid twitch. There are many 
hospitalized patients who experience 
extreme frustration because they are 
conscious but cut off from communica- 
tion. Microcomputer communication 
systems of some kind may eventually 
become standard hospital equipment, 
and could help to make such patients' 
lives much more rich and meaningful. 

There is a wide range of possible options 
for expanding Robin's system. It would 
be easy to add a printer, for example. 
She could assemble a message on the 
TV screen as usual, and then select a 



WEST COAST COMPUTER FAIRE 



36 



BOX 1579, PALO ALTO CA 94302 



'print' command which would cause the 
message area of the TV screen to be 
copied on paper. This would allow her 
to write an essay or a letter. 

An S-100 compatible card is available 
from D. C. Hayes Associates (the 
80 -103 A Data Communications Adaptor) 
which would allow her to select and dial 
a telephone number and send messages 
over the telephone to anyone having a 
computer terminal. A number of com- 
puter networks are now being used as 
communication networks, and it is 
reasonable to expect a network for handi- 
capped people to develop in the near 
future. 

Computers can be used to generate and 
control sounds. Several companies now 
offer S-100 compatible speech synthesis 
cards. It would be possible for Robin to 
learn to speak out loud, using one of 
these cards. Although the necessity of 
learning a new 'language' of phonemes 
would initially make this a slow commu- 
nication process, the potential exists 
for this to be a very rapid communication 
mode. 



Several companies now offer S-100 
compatible circuit boards for music 
synthesis. It would be possible to write 
a program which would allow Robin to 
compose music and instruct the computer 
to perform it for her. Computer graphics 
are also possible. With a higher resolution 
video display, it would be possible for her 
to draw pictures with fine detail, and 
with a suitable printer, make 'hard copies' 
of these on paper. 

There are several CMOS microprocessor 
CPU chips available now. Although 
CMOS memory and peripheral chips are 
still somewhat more expensive than TTL 
and NMOS chips used in Robin's system, 
it is already practical to build a micro- 
computer system similar to Robin's 
which would consume much less power. 
Such a system would be more expensive, 
but would be capable of battery oper- 
ation, increasing portability. 

S-100 compatible circuit cards are readily 
available which allow a computer to 
control electrically operated devices in its 
surroundings. It would be easy to expand 
a system like Robin's to allow her to 



turn on and off lights, appliances, etc. A 
system which can communicate can be a 
flexible control system too. 

If you decide to try to build a micro- 
computer communications system for a 
handicapped person, I'd like to hear from 
you. I may be able to help with advice, 
and Robin might benefit from your 
ideas. My mailing address is: 
Tim Scully 

35267-136 CH 

PO Box 1000 
Steilacoom, WA 98388 

NOTE: Thanks are due to the staff of 
McNeil Island Federal Penitentiary, 
whose cooperation made this project 
possible. The staff of Aquarius Elec- 
tronics in Albion, California were also 
very helpful in tracking down parts for 
Robin's system. Robin's family provided 
the essential financial support, and 
Robin, her family and tutors all helped 
by contributing ideas and suggestions. 

McNeil Island December 1977 



CO 

E 

CO 



O 



Q_ 



I I 



X*- 

So 



X 

u 

Ss 

CUO 



E E E 

£ £ £ £ fe 



O J5 

"£ 3 

CD .Q 

3 CO io Co C „ Co 

a oj?w a »o."5oo.t; 

^ *i 9 *fc 9 J» "ft 9 .® *R .9 .9 i 



O 

8* 



x o 



U O 

CD C 



(3 Kb 



OW O. C « o 



<I 
OCO 



Ul 

a. 

CO 

I* 

a. _ 

is 



8 



UJ 

s£ SiSog d5 O 
zco,_eju.z{n 2 u- z _ 

-J5;i-JDlQ-iQQ-iQQ-JQr-Jl5§S< 
-J co la. 1 l _l i_j_i>_i v > — X — 

o™-io™-j-jo-j-io-i-jo_iSo z .s<™S 



5 w ^-S z «l.S 8 o s ° s o s o J; 



.it- 



<D CO 



21 2 

X CL T3 
ep co o 

JK CD ** 

= * £ 

E 

o 



£ ES 



» a 

E £ 

c o 
o 



^cogj 

|2£ 

-i a uj 
-i -Jo. 

<xs 

O-l^ 




CN«o»ODUJ»-^-rv<Qocococ»OQo»-CN*r*o>Ou. 

^*-«-^"«-CMCMCMCMCMCOMe , JC'JC>CO**< , 5^*** 

CM CM CM CM CM CM CM CM CM 



•ppopoopoo 

ICMCMCMCMCMCMCMCMCM 



PO OO 
CM CM CM CM 



CM 



<2 ID _T C 

3.E £w 

C CD 3 O 
~:S 8 CD 

I -Si 

~ £ 3 > 

ague 

Sfcx £ 

T3 Q. ** 

&:> o s 

* — II * 

•£ °I c 

** co UJ CO 

S"Su- » 
So • S 

o 5 •■§ 

2 o . a 
■w O +* 

■a "° *- « 

- D Z X & 

.E uj S £ o 
sS w« tS 

a»_ O ** c 
c O *• c 

— « e « 
$ -2 « 5 c 
5q"° g £ 

£ c ~ o 3 

9 » .O 

« aS « „ 
h <p .2 .£ -B 



Ijl 

OiO 



CO 



co b S co 
o a- o o 

QQQQ 
_J — 1 _l — » I— 

X X X X Ul 
CO -1 CO -I X 



8§R§ 

CM < CM < g 



O 

o 

CQ CM CO 

Ul CM UJ CM CM CM CM 



n<Qo« 
to to io co to 
p o o o o 

CM CM CM CM CM 



WEST COAST COMPUTER FA! RE 



37 



BOX 1579, PALO ALTO CA 94302 



t- S S 

• 18 

il« 

f« ** 
•So 

w -•= 

° I- 

H* 

*» „ •> 

m — C 
5 -• © 

§• .s 
• € 2 

Si o 

fc «5 ♦- 

•mi. 

el! 



** ** 

a S 

*•> ** 

«• •» 

c c 

o o 

o o 

O 

EE 

*- cm 



XX 

SS 

ss 
81 



■D 
gCQ CD 

£88 




i J 

1 1 

£* 

» 
a>0 



£ e 

T> O 
g JC 

• » 








a 








UJ 








CO 


»- 






s 


< 






o 


2. 


o 

CM 


o 

CM 


8 


o 


UJ 


UJ 


CO 


8 


CO 


CD 


CD 


V" 



8 



O O 

UJ Jg § co to § 



£ES!B5E8SS8S8S8S8S8S^^ 



^18888888888888888888888888888888888888 






I I 



i_ c = 



II i I I I § 



:* 

°* 

2 c 
c • 

§ Sea 
I J™ 

2§i 

II 

lis 

Si 



»-x»- 3: «-x»-x*- 

icoiQicoiai 

-i — _i — -i — _i - _ij- 

<£<£<><><UJ 




8S8S8S8S88 



ACDUJor}ieco<Q 
cococ£^r^r*r»h»rH 

« CM 



888888 




e 

a> 

o o c 

o O ° 
a 5 ■S 



= c 



Sill 



I 355-° 

: o "o > 






tTJBS 5 

a • " - 
Efr£c 



o 

■2 : 



5= a © 



sfi 

■* * 1 1 " £ 

P O * > o • 

J c g S *€ 



j itilli 

E 3£JN g 



.O 3 



a S 



quiz o 




x«c 

CD "J ^ 

T-ZW-5J 



■ > 



-jx^eo 



a 
at 
O 



-JJj>J x >-Q<t N(r - 



-ioow2o±2 



p 2<og Q < 

? N 5 r S > ? Z 2 



X 

5xx 



X 

o 
a: 



s> 



<3xB 



< o$ 2s cj<j Qz M 5 



a. 

S m UJ co 

co S — a 



x 
a 

< 

UJ 
CO 



O 

OC •* a -J £ .5 ** 

w Mc.Zz 

Q z 3 8 «** 

5 iu c A ™ E c 



588g 

^88r 



8 



^QPSiugcquj 



§< 
CO 
< 

UJ O 



CM 
U;<8«UJ 

< cab?n 



8^ 



WEST COAST COMPUTER FAIRE 



38 



O CM N " CD a CM rtl U S O 

18888888888 
BOX 1579, PALO ALTO CA 94302 



3 




o 


"O 






o 


3 
O 


JS- 


H- 


V. 

» II 

Z 9 


LU "8 o) 


flag in 
ontrol c 
isplayin 


co 5; 


S OT3 


— « 


2 a 



€£ 



!fc 




O 


Iff 


tt CD 
>J3 




« a 





*8 


a> 

c 


^c 


£ 






££ 


5T 


E"S 


■D 


£ 15 


t 


CD • 

- 8 


a 
"O 


c 


S: « 


CB 


o< 





V rf X 5 ..* h: UI uj u. O UJ 
IU<lu5w£j«<g2xfcjOOofc 

£50^0o"5o=,=:^0-lX_J^ 



o 

CM 



u. IO 



O *~ O 

CM CM O 



cgS 



10 u. 00 u. u) eo co 35 co 00 
OiuOQCNotii<mUJ<rocoO<m<co 



*-CMfo*i^eo<QtiJQe3*r»<Oai^ 
^^^^^^^^■^■inioioioioioiotD 



« o C O 

£ "5 .£ c 
» « = " 

»%&* 

sO ^ C 

* «Q =1 
£2oc=g 
«° go 8 

CO Q. > fl) 

M -i 

-2.TJ g 
n _ o> c 

"* £ o -° 

o "o S> » 

§15 I 

U*» 

U** 

s °-8 i 

3 0) c » 

** o e 
« 0) 5 c 

"~ Q. 

111* 

o£> 2 
if c « 

3 ® *~ !? 

♦.*S £ 
x " - S 



— a 



* * 

- E « 
s — ■£ 

— •» c 

+* O m k- C 

~ a £ c » 

c £ „_ a *z 



S3 

at 03 

<«€ 
C O 

'5 "o 



.i § 






LU 

.<§ 

g>u. 

®2o 

O 

■DO 



a. a. _ o. ;j>- 

5 co S 2 5 * X X a. 
oOIo< 0-2 5=2 

o^y;i"o<jjQ 
'jo ' So tSoo ^ 



IN 

O ® e o 



3 

O u. 

aco ui 

3ML 
O 

3 * to 

« (0 <o 

^ *~ ^ 

•P CM CM 



»- O t- *- O O O 

CM O m CM CM O O CM 

OUJOO OoS«< 

<- O CO «~ «- CM *M CM qj 

CN<UiCMujOQCMujOQm 

OfoU-Or-cpOcoOOO 



N<Qu.NnifMSOu. 
coco<ocor»r*r«.r»r».h«r» 

CMCMCMCMCMCMCMCMCMCMCM 



o O 

■o z 



<B -J 

a -J 

a lli 

O j J; 

C w ® 

E It 

3 « TJ 

K » e 

£« S 



>- 
cc 

H 
Z 

ui 

UI 

x cc 

-W Io.Nq.cl 

tta.-iOQ.cra.' 



co uj 
tt a. 
S:< 
o o 

Uj CO 

S uj 

< 

o _. 

w a8 



E 


a 

3 


O 


♦■• 


z 


$ 






_l 




_l 


UI 


UI 

a. 
c/} 


O 

>-< 


03 


O CO 




ffiuj 


O CO 


ui s 


cl 


1 _i m 
_i 



Ui 



CM 



sScmOOoSS 



"gJQJS jB< go 
VOOCOOOCOCDCOOO 

h-CMCMCMCMCMCMCM 



S .5 J_ 



o 



I E 

o £ 

o o 

c 5 

4- a 



511 
*! I 

as +; to 

C ,^ to 

03 o e 
x: □> a> 

♦* c •- 

5 c 2 

»f1 

H5 J5 c 

81 



_» ^ 



■o 3=5 



o.E 



-IX 



H. 



(0 

+ 

ui I 

o o 

- - 1 < o 



. jnSqqj<Q 
>j^ N jjj-th 

o5nir 



i =■ S o o ^ 5 « o 5 o oc 



-)_J < Q Z OQ 

UJ < ^ S 2 X I 

|oSonJw 

> 



.E 03 fe 

*■ "5 a 
^ui .2 « 

< i_ *- 

"2° a 8 



£. 

?■ 
a 

** ' 
c 

£ 

w 
3 
U 
03 : 

> , 



c * S 

•- »- 2 

.2 g 



I- E 03 



- .is 



a <- 



» o a 

0) co •— 



ffi O 



o r uuS H 00 »- o o 

g„ Mg5g ° og noS 

§^§SSSS^ ^ gS S "cog 

n U|OUICM<CMQui<Q) Z ~Ouj<CM<CMC» 

cmSou-OcmcmOooSO c sOcOCOOCMCMO 

^ o 



"o 
a. 
5 
00 

O CM 

Cm? 



s o « 



CMiocpr*><Ou.cMioco<ao 
ooooooo»-«-»-j;»- 

CMCNCMCMCNeMCMCMCMCMCMCM 



WEST COAST COMPUTER FAIRE 



2 

Si 

M Ou-«-cMi0com 

»»-»-CMCMCMCMCM 
h-CMCMCMCMCMCMCM 



39 



a 

£ «| :o 

o ** *: ^ 






CO 

O 
< 

_i 
u. 

OO 



CO 



co 



JE tt °§ 

♦* — — > 

g «o w » I- 

S c » S X 

s_~-8 S;Ui 

o c a> o Z 

• 3 

-C to - - 

^J 

5* 
o " 



O «- 

"".x^o S - 

JX50?J?5 



z 
co £ 
— a. 
5n 



"g » = s 



a 
g co 



»-o 

U. ^C0 



5 . Ogui 
O ir .2 O) 
= 5 o^: 



<C0fflUJCM< n ui 
CNUip^U-OCNCNr* 



CM 
CO < 

ui O 



O- »TJ 

I-O C^CMCMCMCMCMCMCMCMCMCMCM 



Qo«-CM^-r»<CD 

ICMCOCJCOPJC0C0CO 



O UI 
M CO 



BOX 1579, PALO ALTO CA 94302 



. UJ o 
C < in 

OS 8 * 

£x _ii- 
§--!n 
oX i3 z 

v -J O -s 

M O 

x O 

» o 

c 

_| CM O O 

o 

DC 

t CO W i- 
p: Ui UJ u. 
W *- «- »- 

UNNCN 



UJ 
0. 
CO 



s jJi 



o. a 

3 3 



UJ 

0) o 



s * 






25-d 



co 
< 

CO _l LU 
Z -J CO < 

O OC tf «5 "J 
O uj nr ** ui co 

-IUJI-jH-Q-'- , < 

Jo. In-JOCOC- 

<2X<ZXOO> 



CO 



ui 

r- 

Z 

Z uj 

z 5 



T- UJ 

■ O 
uj 5 

< CO 

a. uj 
co s 

X -J 

I 

X< 
-I o 



J3 r^~ 
UJ 

2 UI 

-JO 
H-< 
X w 

5- X°-UjJ2ui 

S'JS z .s> 

IL<JU1I JU. 

N C -i 0. - -J N 
Z | < S >< < Z 

-» 2 O -j -J O -) 



X 

a 
o a 

z 



z 

UJ 
UJ 

x 

CO UJ 
UjO 

w 5 

<co 
rn 



So 



< GC X 
£ CO Z < X 



"i3"oJo "2 

^ 0. IC0-JQ» — Q. Q - Ct - a -Q- I r- 

^5X< n <2^2"OOOOxxuj 
S^_jot0^5tZZZZ_icoX 



z 
o 

< JO 

oujZ 
co a. D 
ui co a. 



a 
x 
o 
5 
*- 1- 

X co ui 
I- *co 
ZO< 

o<x 

O CO UJ 



* 

en 

rv. 00 

Z f» 
Uig 
, UJ "" 



LU X CO 
Z ON 

Sir J S§g 



> uj oc *- co 
co Z ui *. Q 



N CN {? CM 2 fiCM ll N 



s s s t g S o 

Qcj^Qw<QQuiuiS m m™QcnSq«?Qcn 



oo u ;cncnN^.^u. co 

NOOnOOMOO 



^ N M N N N (VI £ 

°»-0> u c92uj<o no 

nonOOOOnOoSoONNO 



CO U 

LL O 

t- UI 

CO O 



S 

o 

■OS 

»■§ 
■- c 
.2 5 



2E2£8o^S8cScS8o^SSS2S8888 

T,r;S:r;JS MNC, ' <NtN CNrMCNCNCNCNCNCNCNCNCNCM 
CNCNCNCNCNCNCNCNCNCNCNCNCMCNCNCNCNCSCNCNCNCM 



Oui»-^-r>»<QQcNiocop>coc»Ou. 

CNCNCJC0C0OC0T* , 'S , ^^ , ^-^-**-'<fr^- 
NCNCNCNCNCMCMCNtNCNCNCNCNCMCNCN 
NCNCNCNCNCNCNCNCNINCNCNCNCNCNCN 



*TI 



Sr^oO*UJUiiou.Ocp 
iococor*r»coo)cn<0 

CMCNCMCMCNCMCNCMCNCNtN 
CNCNCMCMCMCNCNCNCNCMCM 




•z "8 



*7 



put it in HL 
r new alpha 
t the chosen 
loop back tc 
r alphabet 
i chosen ite 


O 

£ s 


8 

a 

<n 
(0 

♦■* 

c 


8 


a — 


a 


te 2 *- 


•a g = -o £ « 


■o U 


■o 


•S •'"S « 


ro o a as O h= 


£ Si 


c 

CO 


o cb a xi 



C "O 



-Q ^ 

3 
in w 

a> .E 

o o 
SJ5- 



03 £ 
-ri *-> 



O 



Id 

o z z 

OStujUJ 5 ^ rf ,^ ujco to 

coO<coO < -§-§ coo-o. 

^ 1 -J K- _i Q ^ _i " < _l -JQ^Q 

>ijjq.jj>j>-ji-jjxji- 

CO 

q a 
z z 

oo 
oo 

UJ UJ 
CO CO 



O <U 



a> 3 



»- 
Eo 

u-O 



Sf 5c\«0 






O CJ o o 

.. v „.. w O O NO 

8<guiS * o 1 * uiuJ 



o 

o 

UI 

o 



nnco^roUJnco ffi 33roQ<wQr^ujQc»Q<CQ<NCi) 
SncnOcnScnSujooOOcni^O^mOOOcncnNO 



w ** UL CM LO 

oj ■» oo a> eft 

ffl'aCMCNNCNCNCNCNCNCNCMCNCNCNCNCN 



00 UJ LL O 
0> 0> OJ < 



m<*in(00><CQOQuJ_*-r^<QuJ<-rM 



UUUJ^.^r^<QUJ^CN«I^CQC0UJU.CN 

<<<oocacQQ90QcauuQuouuua 

CNCNCNCNCNfMCMfMCNCNCNCNCMtNCNCNCNCN 



C «> 

o E 

O 

II 
o 5g 

Z Z 3 

? 3 a 
a. q. q, 

ui ? ■£ 

z 

D 

o 

X 
OS 

D 

CO 



c 

J3 O 

3 « 



z e 

"j 0) 

e UI °» 



*■ O CO x 



^: T 



O 
X 

H- 
Z 

o 
o 

a> 

<*- 
o 



£ 8* E 
I Jog 



O ui . ^ 

XU t Q q. 

z » o ^ O . z 

^cOn-l-cjSbo. 

Ruitco^OoeL 

l" J o x" -I -" UJ z 
-._IO--J-«clS- 

x< N x<<s2 

JOtJOCJ'Z 




r- a 



EcnOOcnOOO 



tJCOCOOiOU-CNLOCO 
cQQQQQlULULU 



WEST COAST COMPUTER FAIRE 



40 



BOX 1579, PALO ALTO CA 94302 



° 8 

I 21 -J I P 

CD 3 CO Z 00 > 

U. Q U. < U. -I 

co in co J2 co — 

O < Q uj Q m 



m 
co 
> 

D 

QQ Q- 

"-o 

CQ < 

Q uj 



> 

O 
< 

"a 

"- UJ 

CO h- 

a o 



a 

N 
X 

o 

-> 
X 

< 

> 

UJ 

gq 

> 

o 
o 

CO 

o 

r- 
_J 
a. 

21 
D oo 

u_ co 

z o 



u 

Q 

z 

CO 

u. 

g 

>- 

D 

I 

a. 
co 

!3i 

UJ 00 

<u. 
O co 
CC Q 



a 
v. 
> 

_i 
o 
oc 

D 
Z 
5 

o 

>- 

~ U- **• 
2mO 

DQui 



> 

or 

D 

co 
u. 

a 
o 

-i 
z 

§ 

>- 

Q. 
< 

o 

II 
CQ CO 
U-O 
03 UJ 

Qh 



O 

S 

_i 
> 

I- 
co 

_ _ u. O 

O m in m uj 

a i 



a 
> 

D 
X 

N 
> 
O 
CQ 
U_ 

O 
UJ 

< 

a. 

a 

I« 

CQ 



5 

O 

N 
> 

cc 

co 

uti£o 

,« 2 ,« < 

CQ CO 00 — 

QhQuj 



O 



CO 

cc 

CQ O CQ 

UL J UL 

00 < CO 

Q uj Q 



« o 

Q. O) 



a 
o 

>■ 00 
3 2 
I Q. 
<IhI 
oco 5 CO 

Ol CQ O 00 
uj Q UJ Q 



CO o 

> 

I- 

D 



2 



3 

o 

O 00 03 

< CQ < 
111 Q < 



ft 



52 



2 g «- 

c c ~ 
o o a 



o 

I 
Si 



cc 

o 

1 1- I 



Zi< 

— _ ^ ^ Z I fP U. 5 

-I £ => fe Q <£ O g £ Q | 

-"_cc_ujIo_o^^ 

UU™U™U==)U^<S 



oQO(Nc y )<ooir)cDu.o<ooto(o c ^Qo<-muLOcou.Qa) 
po»-«-CNCN<t^-incor*r»o>c><<03ooOOUJUJU.o«- 



oS 



CQOLC)C0U-oo)<r«COUJU_C0I^U.OUJ 

V _ «- «- cn cn co co 25 in to r» r- 



CNCNCNMCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCMCNMWCNCNCNCNCNCNCNCNCNCN CM CN CN 



O u. u. u. u. 
o co co co oo 

CN ft CN S CO ¥■ CN 8™Q 

Ouj<uj<uj<ujCN(pr<. 
Uu.Uu.Uu.Ou.QOr>> 



OC0U0C0<OU-CN^-r--G> 
0000000*-«-«-»- 
U.U.U.U.U.U.U.U.U.U.U. 
COCOCOCOCOCOCOC0COC0C0 



Si 
CD 

j= 
JS-XX 

(DO CO 
«o-CO <* 
3 CO CO 
OCN<N 

'J3<C0 

> 



Sl5TilI?I I ln 1 Hl5J? I t 





CO 

Tr»<DococD<»Uii.cNiococouj»-^r«-<QococpcnU 
cUUUOOOOOOuJUJUJUJUJU.u.u.u.u.00000 

•CNCNCNCNCNCNCNCNCNCNtNCNCNCNCNCNCNCNCNCOCOOOCOCO 

TMNftlluftlfUMrMruAlNftJIMMfMrMNfMNIMniNrMN 



U UL CN 

~ O i- 

»CMCNCNCNCNCNCNCNCNrNIOICNCNCNCNr>ir<i(NOICOCOC^r3C^COCO 

ICVICNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCN 



N O 

^ roUJ 

a « n 

>r x 

Sil 

Z^3 
_i o ^ 

J UJ "O CQ 
SCC c Q. 
a> >- 



co a_ 

„ CQ 
3 U 
O I 

JC — 

S5 



CO 

*i 

2 r- 

<B CO 

■° < 



OC 
I> 
00 ^ 

"-O 
CQ < 

a uj 



5 

2 

N 
O 

Z 

o 

co 

> 
u 
cc 

si 

"-i 

m uj 
QO 



O 
I m 

u. < 
Q uj 



> 

r- 

UJ 

U 

00 Q 

"-z 

oo CO 

a cc 



a 
a. 

-i 
z 
i 
u 
o 

oo 

5 

> 

CO 

I: 

D 

I< 
CQ UJ 

CQ OC 
QO 



£< 

coo 
"-CC 

m x 
Q uj 



LL O U. p 
CQ £ CO CO 

Q UJ Q Z 



CO oo 
u. u. 



WEST COAST COMPUTER FAIRE 



41 



inu.o<oocNcocor-.Q = -5"r:JN2><<p i 7 
«-CNco^-^'CDCor«.r»>o>0)<<UOQQu.u. 
cocococononcocococococococpcocococo 

CNCMCNCNCNCNCNCNCNCNCNCNCNCNCNCMCNCNCN 

BOX 1579, PALO ALTO CA 94302 



a. 8 

3 .O 

* a 

(J Q) 

a> 



4- a 

c c 

3 = 

5 3 2 
„ 5= o» .2 H 

2; o-E 5 X 

» £ « ™ Q. J-- 
2 g-o|^oo 

^ .* *i -n -5 



U 



jg o 



8 S o 

^- ffl fc 



- S 5 

2 w ° C " 

™ c i s ° s 2 

S; o ** ° i_ *• 

■ o c 8 c 



o"? .5- -o.tr 2 



•= t: .e ■= 

. T3 •*■ - 



n^ i 5 » it ,2 S: .2 *: 



«> J C ■— (B 2 CO 



g « 8 

■tr 8 ° 

8.E * 
o t 8 

— W .C 

to +* > 

E£ g 



£2 

jn co 
3 o> 
A c 

CD •= 

1 



DC 

xx>!ts XQ .!f 

o o 5 ft ° z s ft N ft" ft z ft 5 ^ 



3E S2 ± « £ 5 & "-. 



CO 



Eg*8i?J58lSl85£<ri*x«»S2i 

N5ioa;i5:iQs§5§x3>x«|o § ^ 



I -I 



ft 


8 

CO «■« 


OS o- ■- 

£ 8 S te 

s « « s 

£ 5 ♦■> 


a> 

c 

+■> 
c 

3 


c 
1" 


it upper 
int as is 
it lower 
not, prii 
ake it lo 
d print 


O 
U 


&g 


,2a»£E« 



a ai 
>> 



a> o) 3 Q 






(E 
UJ 

2 5? 



_ O _ 3 — a. 
ft z ft o 9 2 

r- 
z 

oc 



":u.ii;(i;u-u-u.u.o £ u. u. u. o 9 o 

»g Su.SoSoSu.goSu-Sog u.S 3 8 8 8o5-?o§ 

u. 3 S in «n ^ 5 cn O »- 00 S O Q OO S u. g O Q Q c? S S ? « S S 

CNCNI^lLOcNOU.Oll.QlLOLJ.OOUOOU.3u.roOcNCNO0Ql5lon™ 



S9y u ; o '- fN{, '><0oocoOocM 




n ■ ■ 

~ T. • 



-I 

E - 
* 5 .« 8 



* 5 «> g ..a 
« jc -_ I- E fee 



3 
a 



■ * ft ^ 3 ~ 
.« O^ ■§ 

-8 I£ B Jl 8, 



SI- 
'S s 

«S CO 

CO >- 



c " 

si 



S £ 

co *D 

c <-• 



Sl- 



8 s 
^ a 



■£. 



— ■" "O 

a» £ * 

a.E 

co s: 
* $ 






c co — 

5 j,j 



o ■= 



co 

(0 

ill 



42 8. E 



£■ N 

CO w 

2 °» 
co •= 

IS 

o ° 

» fit 



i 8 

*^ « a 

(!_ O" Ol 

■Q g •*= .E > 

B .. E C o 

£ o 2 co P 

♦-JK ° " £ 

£ y a-*- co 
3 S a> ^ 

O-c ffi « S 



.. r>.M-- 

» £ ~ 

c - ** 
.£ 3 X 

5 £ S^. 

■O co •S « 

•■= ft • 

o. f J- +- 
w .- a — 

'"& .£ € .!2 




"t U. O 



, ^g 8 

* J X o ^~ 
00 o S 00 



u. 
e«s 

(0 

at 



"8 



it » fey 

W r\ 00 ^r 22 O 



ffi §8§S §§ci§8ci§S§ a ®S E E*88&g Sfcfeoi tS g g 8»g^cS2 

^ co cd co Q do n<uiQnNUjQ<0QOmujOuiOui n u<QujN< m nuiN<ii)<-u2mmcaUJtNtfmOnS<Ur\i 
OU-OOtNON«OOc>inOcN|UJOUJ Oi>.Oi^Su.QOiJ.SS«OiJ.oSlJJQnoSSo 




CO CO CO O CO CO CO 



WEST COAST COMPUTER FAIRE 



42 



BOX 1579, PALO ALTO CA 94302 



SPEECH RECOGNITION AS AN AID TO THE HANDICAPPED 

by 

Horace Enea and John Reykjalin 
Heur i s tic s , Inc . 
900 North San Antonio Road 
Los Altos, CA 94022 



ABSTRACT 



Speech recognition permits control of devices as well as entry 
of data to computers. Using the control aspect of speech 
allows an otherwise immobile person to control a wheelchair or 
turn lights on and off across the room even though restricted 
to a bed or iron lung. 

A pilot project in speech control is described which uses a 
model car linked to the computer by radio. Computer programs 
are included. 



WEST COAST COMPUTER FAIRE 43 BOX 1579. PALO ALTO CA 94302 



MICROPROCESSORS IN AIDS FOR THE BLIND 

Robert S. Jaquiss, Jr. 

P.O. Box 500 

Beaverton, Oregon 97077 

(503) 644-0161 ext. 5617 



Introduction 

There are increasing opportunities for 
the blind to function effectively in society 
because of the increased use of computers for 
data manipulation and information retrieval. 
This is possible because blind persons can 
receive the same information as their sighted 
co-workers. 

The rapidly increasing number of small 
business computers enable blind persons to 
work as programmers and clerks. Also, as 
research assistants, the blind can use data 
bases such as NTIS (National Technical In- 
formation Service), IEEE and Lockheed to 
research articles on topics of interest. 

The major difficulty for a blind person 
is determining the computer's response. This 
difficulty can be overcome by the use of 
equipment such as braille terminals, Optacon, 
closed-circuit television magnifiers, and 
speech output devices. 

This paper describes some of the devices 
that enable the blind to read computer out- 
puts and explores the future role of micro- 
processors in this field. 

Braille Printing Terminals 

Various devices have been designed to 
produce bra i 1 1 e computer output . Although 
a number of equipment prototypes have been 
built and demonstrated, the only commercially 
available braille computer terminals are sold 
by Tri formation Systems, Inc. of Stewart, 
Florida. Triformation makes two basic types 
of devices: one produces braille on a paper 
tape and the other on fanfold paper. (See 
figure A-l . ) 

An impact printer, such as a teletype or 
lineprinter, can be modified to produce 
braille. A pad (thin rubber or elastic) 
placed over the platen, or in front of the 
hammers on a line printer, allows impressions 
of the period to simulate braille. The 
braille produced in this manner is rather 
poor, because the dots are not spaced 
correctly and because the printing mecha- 
nisms are not strong enough to emboss heavy 
paper. 

A modification of this type is available 
for the IBM 1403 printer. While rather ex- 
pensive, this printer does produce good 
quality braille. 



WEST COAST COMPUTER FAIRE 



The Optacon 

The Optacon allows the blind person to read 
ordinary print directly from the screen of a 
bright crt or from a hard copy (see figures A-2 
and A-3). In operation, the Optacon picks up 
the image to be read with a camera and focuses 
it onto an array of photodiodes. The user feels 
the ends of vibrating wires, one for each photo- 
diode, to feel the shape of the characters. 
Uppercase type is the easiest to read, followed 
by lowercase type. The plainer the type, the 
more easily it can be read. While the Optacon 
is not as fast to use as braille, it is more 
versatile. 

Closed-Circuit Television Magnifiers 

For use by partially-sighted individuals, 
the closed-circuit television magnifier is basi- 
cally a camera attached to a high resolution 
black and white television monitor. The camera 
is equipped with a special 20X magnification 
lens. These machines also incorporate a reverse 
image capability. This provides white letters 
on a black background which, in some cases, is 
easier to read. 

Unless the closed-circuit television mag- 
nifier is equipped with a viewing table, reading 
of hard copy may be a problem, and the copy is 
not portable. A plotter can be used to make a 
portable copy with large letters. However, this 
is a slow job, and the paper must be manually 
placed on the machine. 

Speech Output Devices 

Speech output is available in various forms. 
Votrax types require a string of phonemes for 
speech generation, while the Compu-Talker type 
requires more complicated software. In certain 
applications, such as obtaining listings of 
long programs, this type of output is not accept- 
able because it would require the user to mem- 
orize entire programs in order to make 
corrections. 

TSI (Telesensory Systems, Inc.) makes a 
type of speech board which has a canned vocab- 
ulary on it. The canned words will be generated 
when the board is sent a number corresponding 
to the desired word. 

New Research 



44 



BOX 1579, PALO ALTO CA 94302 



There is some work being done with tactile 
displays, the blind person's version of a crt. 
To my knowledge, there are no commercially- 
available devices of this type. Some proto- 
types have been built that use air to drive 
pins up to form a braille line. Others use 
the input port on an Optacon so a computer can 
generate uniform characters on the Optacon dis- 
play. This last method solves one of the major 
problems of the Optacon, which is the necessity 
of holding the camera to the screen with one 
hand, typing with the other, and reading from 
a braille coding sheet. 

Microprocessors in Aids for the Blind 

Microprocessors will be invaluable in aids 
for the blind because they can perform data 
formatting and searching at a reasonable cost. 
Braille books are very large. For example, 
the 1959 edition of the World Book Encyclo- 
pedia requires 43 feet of shelf space. The 
Art of Computer Programming , Volume 1, by 
Knuth if almost two feet long. (See figure 
A-4. ) Because of the large size and high cost 
of braille books, attempts are being made to 
store books onto data cassettes which can then 
be read by a computer and displayed on some 
sort of refresh device. With this approach, it 
will be possible for the blind to have books 
available, at a reasonable price, which can be 
rapidly read and/or scanned through using an 
editor. 

Microprocessors can also be used to inter- 
face display devices to instruments. This will 
be much easier in the future, because of the 
GPIB interface bus that is being used more and 
more in instrument design. 

Summary 

Equipment now on the market enables blind 
persons to determine a computer's response and 
thereby receive the same information as their 
sighted co-workers. 

The cost and size of braille books can be 
greatly reduced by storing them on data 
cassettes. Microprocessors will play an im- 
portant role in the devices that enable the 
blind to read the data stored on the cassettes. 



WEST COAST COMPUTER FA1RE 



45 



BOX 1579, PALO ALTO CA 94302 




Figure A-2 

An Optacon is being used to read 
from the screen of a Tektronix 
display terminal. 



Figure A -4 

The braille edition of The Art of 
Computer Programming, Vol. 1 
by Knuth. 



Figure A-1 

The author is reading the output 
of a braille printing terminal with 
his right hand. 





Figure A-3 

An Optacon is being used to read 
a hardcopy printout. 




WEST COAST COMPUTER FAIRE 



46 



BOX 1579, PALO ALTO CA 94302 



BLIND MOBILITY STUDIES WITH A MICROCOMPUTER 

Carter C. Collins, William R. O'Connor 
and Albert B. Alden 

Smith-Kettlewell Institute of Visual Sciences 

and Department of Visual Sciences 

University of the Pacific, 2232 Webster Street 

San Francisco, California 



ABSTRACT 

In the evaluation of a new sensory aid for 
blind mobility comprising a wearable tactile 
vision substitution system we have made a 
number of behavioral measures. The initial 
batch of data was collected and reduced by 
hand which pointed up the necessity for auto- 
mating the procedure in order to process the 
volume of data anticipated in a large scale 
evaluation program. For this we have designed 
and built an 8080 microcomputer based blind 
mobility evaluation system, utilizing an ultra- 
sonic triangulation ranging method, which today 
contintinuously tracks and plots the real time 
course followed by a blind person in our 20 x 
30 foot mobility laboratory space. The detail- 
ed path of the blind walker is recorded in 
graphical form on a monitor screen overlayed 
by the plan of arrangement of obstacles in 
one of many arbitrarily chosen obstacle courses. 

BASIC language software is being developed 
to compute, store and display some of the more 
important mobility parameters, including colli- 
sion avoidance, average walking speed, location 
and duration of stops, total travel time, 
travel efficiency and safety. As an example 
of the kind of output this system will be re- 
quired to produce we relate the findings of 
our initial study. 

We have examined the effects of some 40 con- 
secutive practice trials on the safety and 
efficiency of indoor mobility performance of 
each of two blind subjects in a laboratory 
travel environment. After two hours mobility 
experience with only the tactile imaging device, 
blind subjects walked freely at about one foot 
per second on a 65 foot mobility course through 
a room cluttered with furniture, detecting 
and avoiding over 95% of the obstacles (100% 
in half the trials) . Subjects decreased stop 
and search time from 61 to 14 seconds with 
a 120 second mean total travel time. Travel 
efficiency (percent time spent walking) in- 
creased from 63% to 86% during these trials. 



These tests demonstrate the feasibility of 
the concept that optical information alone 
presented on the skin can contain sufficient 
information to permit the blind to avoid 
obstacles and steer a clear path for successful 
indoor mobility. 

Introduction 

Vision is probably our most important 
mobility sense, permitting us to walk rapidly, 
accurately and confidently wherever we wish to 
go. Since this source of mobility information 
is not available to the blind, there has long 
been the need for an effective sensory aid 
permitting safe and efficient travel by the 
blind pedestrian. The latest electronic 
guidance devices (1,2) have not yet been 
generally accepted by the blind community (3) , 
and today the long cane remains their best 
available mobility aid (4) . 

It has been the specific aim of this present 
preliminary investigation to determine the 
feasibility of utilizing wide field optical 
information impressed onto the skin as a mobil- 
ity aid for the blind. In this study we have 
set up a synthetic mobility environment and 
have made a number of objective measurements 
of the mobility performance of blind subjects 
using a newly developed wide field of view 
sensory aid as their only guidance device. 

This preliminary study alone required over 
150 man hours of data manipulation. In order 
to expedite processing of the voluminous data 
expected in a full scale evaluation program 
it has become necessary to devise an automated 
data collection and reduction system. This 
system was designed to follow a person picking 
his way through our laboratory mobility testing 
area. We required sufficient range to cover 
the 20 foot square mobility course in our 
20 x 30 foot laboratory. Range resolution of 
less than 2 inches was required to detect colli- 
sions with obstacles, and this can clearly de- 
lineate individual footsteps. The sampling 
rate must be fast enough to preserve the con- 
tinuity of the information, even with rapid 
motion, without in any way encumbering the 
motion of the pedestrian being tracked. In 
addition, the system had to store the X-Y 
coordinates of each sample of the pedestrian's 
track for statistical analysis of a trip 
through the room, and provide sufficient extra 
machine capability for storing the outlines 
and positions of furniture and other obstacles 
in the mobility course. 



WEST COAST COMPUTER FAIRE 



47 



BOX 1579, PALO ALTO CA 94302 



For training purposes, we wanted to provide 
the possibility of performance feedback to the 
pedestrian, in something approaching real time, 
by the operator of the system; i.e., a meaning- 
ful way to permit the pedestrian to compare 
one passage taken through the room with 
another, based on information collected by the 
system, and made available shortly after com- 
pleting a passage. 

The system which we have designed comprises: 
An ultrasonic locator system consisting 
of an RF-ultrasonic transponder to mark 
the position of the blind pedestrian by 
triangulation. 
A triangulation (R. ,R ? ) coordinate to 

Cartesian (X,Y) coordinate conversion 
program with an output graphics display 
map of the pedestrian's path. 
A mobility performance evaluation program 
resulting in archival mass storage of 
path (X,Y and time) coordinate and per- 
formance evaluation data. 
Ultrasonic Locator System . The blind pedes- 
trian locator and tracker consists of a 
"wireless tether" similar to the apparatus 
used by Strelow, Brabyn and Clark (11) to 
follow the progress of blind pedestrians in 
their mobility laboratory at Canterbury 
University in New Zealand. However, our system 
eliminates the three long strings which they 
attached to the subject's head in order to 
compute his location in the laboratory. Such 
strings would become entangled in the overhangs, 
columns and other tall obstacles encountered 
in" our mobility laboratory. We have replaced 
the strings with two invisible RF-ultrasonic 
links, leaving the pedestrian completely free, 
with no strings attached. This ultrasonic 
triangulation technique is diagrammed in 
Figure 1. 

T^e components" of this system are: 

1) a transponder (transceiver) worn by the 
blind pedestrian made up of an RF receiver 
which pulses an ultrasonic transmitter (small 
40kHz loudspeaker) . This RF receiver picks up 
the signal from 

2) an RF transmitter triggered by 

3) control electronics which are controlled 
by 

4) the microcomputer and 

5) two microphones which pick up the ultra- 
sound pulses generated by the ultrasonic trans- 
mitter. 

These microphones feed their amplified 
signals back through the control electronics 
to the microcomputer which generates the 
X-Y coordinates of the pedestrian from the 
ultrasonic time delays as described later. 
The components of this triangulat ion-tracking 
system are shown in Figure 2A, and the system 
is being worn (by O'Connor) in Figure 2B. 

The operation of the ultrasonic system is 
as follows. The microcomputer (Figure 1) 
sends a start pulse to the control electronics. 
This sets two flip-flops, and applies a 4kHz 



audio modulation signal for about 15 ms. to a 
low power 28MHz R.F. transmitter. The outputs 
of the two flip-flops start two counters 
counting the output of a 10kHz clock signal 
generated by the microprocessor. The 4kHz 
modulation of the broadcast signal is detected 
by a tuned filter in the R.F. receiver carried 
by the subject. This detected signal is used 
to turn on the ultrasonic ( 40kHz) transmitter 
worn by the subject. The ultrasonic receivers 
each receive the transmitted 40kHz ultrasound 
delayed by a time proportional to the distance 
from the subject to the receiver. The first 
received 40kHz signal from each receiver 
exceeding a set threshold is used to reset the 
flip-flop associated with that receiver. This 
resetting stops the counter whose count is 
proportional to the measured distance. (For a 
10kHz clock, one count represents a resolution 
of 1.32 inches.) The microprocessor reads the 
counters, resets them and initiates a new 
cycle with a start pulse. 

X-Y Coordinate Computation . The ultrasonic 
triangulation data must be converted to 
X-Y coordinates for plotting and convenient 
data reduction. The triangulation data R and 

R_ are converted to X-Y Cartesian coordinates 

in the following manner. 

To help speed the calculations some alge- 
braic manipulation was done to allow one of the 
two equations to be solved without the use of 
square roots. 

Referring to Figure 1: 

X = L - X* where L is the length of the 
testing area, in this case 
20 feet. 

2 2 2 

(a) yc + Y Z = R * 

2 2 2 

(b) Y = R - X 

(c) (D-Y) 2 + X 2 = R 2 where D = the 

separation between 



the microphones. 



expanding (c) : 



2 2 2 2 
D - 2DY + Y + X = R 



substituting (a) : 



2 2 2 2 2 

D - 2DY + R - X + X = R 

2 2 2 
-2DY = R - D - R 



(1) 

from (a) 
(2) 



Y = 



2 2 2 
R l + D - R 2 

2D 



/ 2 2 
X =Vr - y 



WEST COAST COMPUTER FAIRE 



48 



BOX 1579, PALO ALTO CA 94302 



Even more simplification and speed-up of the 
software was possible due to the fact that the 
combination of resolution (an inch or two) and 
range (from 10 feet out to the 36 foot diagonal 
of the 20 by 30 foot room) allowed the use of a 
single computer word of precision in the input, 
provided that the data was normalized for this. 

In operation the system runs at the afore- 
mentioned tenth second repetition rate and its 
resolution is fixed by the clock applied to 
the counters. This determines the minimal 
change in delay, between the strobe and the 
returned pulse detectable in either channel. 
In one of the clock periods chosen (C 100 ms) 
sound will travel 1.32", which in turn is the 
unit of measure used with the 256 x 256 
graphics output for a useful length in either 
direction of 28.16 feet vs. the mobility 
course dimension of 20 feet on a side. 

The X-Y coordinate computing application 
program is written in 8080 machine code and 
runs on an IMSAI (Figure 3) equipped with the 
following hardware: 

- Extensys 64K dynamic RAM card with 
appropriate disables. 

- IBEX 16K PROM board with the (half used) 
Processor Tech. ALS-8 firmware used in 
development . 

- Chromemco BYTESAVER with the application 
and I/O programs in EPROM. 

- IMSAI PIC-8 with the counter-mux. hard- 
ware built in. 

- Processor Tech. CUTS board for "CUTER" 
based mass storage on cassette. 

- Processor Tech. 3P&S board for I/O. 

- Matrox ALT 256**2 graphics board for 
plotting the output. 

- Matrox ALT 2480 board running the system 
output. 

Everything is tied together as illustrated in 
Figure 3. 

The X-Y coordinate computing program is 
written in 8080 machine code and is indepen- 
dent of any higher level language or operating 
system. During operation the program behaves 
as follows. An initialization routine sets up 
the stack pointer, a jump table, and the 
address of both the list and a buffer where 
sampled data is kept temporarily. It then 
programs the priority interrupt /programmable 
counter board to interrupt the system at tenth 
of a second intervals, and halts. 

The interrupt service routine controls the 
program; when called it inputs data from the 
previous cycle, issues a reset to the hardware 
and outputs the R.F. strobe. 

The time during which the hardware is ac- 
quiring new data, is used in this manner to 
process the data that is now loaded into RAM. 
In processing, the data is first checked for 
errors and then normalized. The "Y" coordinate 
is then found using eq. 1, that result is 
stored and used in the finding of the "X" 
coordinate with eq. 2. The pair of coordinates 
is then output on the map display, and stored 



WEST COAST COMPUTER FAIRE 



on a list which resides in RAM, filling upwards 
from 0100 H. Finally the lists' pointer is 
incremented, and things halt until the next 
interrupt . 

Control of the ultrasonic system is imple- 
mented through one output and one input port 
on the Chromenco 3P+S (1/0) board. The output 
port uses three bits to operate a custom built 
circuit mounted on the Priority Interrupt/ 
Counter board (PIC-8) containing two eight -bit 
counters, a multiplexer to switch between them, 
and buffers. Bit zero starts the counters at 
strobe time (they are stopped from counting by 
the detected ultrasonic pulse)- Bit one selects 
one of the two counters, and bit two resets 
them after they have been read. Input is via a 
single eight bit wide input port. 

System I/O is through a Wyle Computer Prod- 
ucts CRT and keyboard terminal chosen for 
economy. Input from it required a custom soft- 
ware package and, an input port and a status 
bit on the 3P+S board. 

Output to the CRT comes from a MATROX 24x80 
memory mapped video board (which occupies 4K 
of space because it uses twelve address bits to 
access characters by row and column) chosen for 
compatibility with printer formats. It also 
needed a custom softward package. 

Pending the arrival of our disk, development 
tools were Processor Tech's. ALS-8 firmware 
module (8K) for assembler, editor, and debugger 
as well as their tape based CUTER system and 
board for mass storage. 

The applications package has its own special 
output (Figs. 2 and 3) on another CRT graphics 
monitor; this is driven by a MATROX 256*256 
graphics board, which looks to the system like 
four 1/0 ports. They include; "X" address, 
"Y" address (both 0-255) , intensity (on-off , 
but expandable with decoding and multiple 
boards for colors and grey scale) and screen 
erase. A sample output of a pedestrian's track 
on the graphics monitor is illustrated in Fig. 
4B. 

There appear to be provisions for synching 
the rasters of the two MATROX boards and sum- 
ming their video to get graphics and alpha- 
numerics in one combination display. 

Taking its input from the X,Y coordinate 
computing program's output, the mobility 
performance evaluation program in BASIC lan- 
guage should prove very flexible. Any changes 
or additional relationships to be calculated 
can be simply added at any time. The mobility 
performance parameters which we have found most 
important to be evaluated at this time include: 
. X,Y coordinates of blind pedestrians' 
position 
instantaneous velocity and acceleration 
of the subject 
. average walking velocity over entire 
course 
location and duration of stops 
. length of individual paths between stops 
. total distance traveled by subject 

49 BOX 1 579, PALO ALTO CA 94302 



. number and direction of turns taken by 

subject 

. number of collisions with obstacles 
. number of obstacles approached by subject 
collision avoidance, i.e., percent of 
encountered obstacles with which 
subject avoids colliding 
. total travel time 
travel efficiency 
. the productive walking index or percent 
of total time spent actually walking 
. other factors, as are deemed important, 
can be programmed for computation in 
simple BASIC language. 
Examples of such reduced data are taken from 
our original batch of manually processed infor- 
mation. 

Sensory Aid . The wearable sensory aid uti- 
lized in these experiments (Figs. 5 and 6) has 
been developed over the past ten years (5,6,7). 
It utilizes a miniature, monolithic, wide angle 
television camera mounted on the frame of a 
pair of glasses which serves as the artificial 
eye of the sensory aid. Images from this 
camera (Fig. : ) are electronically impressed 
point -for-point onto the skin of the abdomen 
by means of a 10-inch square array of 1024 
coaxial stimulus electrodes mounted on a flex- 
ible, elastic supporting garment worn directly 
against the skin of the abdomen (7) . The com- 
plete system weighs five pounds including two 
pounds of rechargeable nickel cadmium batteries 
for eight hours of operation. 

A small and versatile optical system was de- 
signed by one of us (CCC) for blind mobility 
use with the sensory aid. The optics provide 
an adjustable field of view up to 180°, an 
infinite depth of field which permits operation 
with no focusing adjustments required by the 
subject, and a large aperture (f:0.5 for oper- 
ation with available room light. 
— ; Prel iminary trials indicate that a 90-degree 
field of view appears to be about the best 
compromise between sufficient resolution with 
the 32-line system to detect obstacles and the 
very wide peripheral field of view necessary 
for mobility. The optical axis of the lens was 
directed 45 downward to include a field of 
view from just above the horizon down to the 
space directly in front of the subject's feet 
in order to permit him to detect low obstacles 
within a footstep of his path. This field of 
view and lens direction were used throughout 
these tests. 

Mobility Course . The experiments performed 
in this study were carried out in a modular, 
quickly alterable and objectively definable 
synthetic indoor mobility environment contained 
in a 20 by 30 foot room. This mobility course 
was layed out in a Cartesian coordinate grid 
system with one foot square vinyl floor tiles 
(Fig. 4A) . The obstacles consisted of real 
walls, a door frame, pieces of real furniture, 
high and low tables, chairs, a podium, waste- 
baskets, boxes and wall curtains, as well as 
simulated columns and overhanging beams con- 

WEST COAST COMPUTER FAIRE 



structed of corrugated cardboard for subject 
safety (Fig. 6). 

Sixteen different courses were layed out on 
graph paper with obstacles located on numbered 
squares corresponding to those of the room. 
This facilitated quick relocation of obstacles 
and permitted a rapid and essentially random 
temporal sequence of different layouts to be 
presented to each subject. Illumination was 
30 to 50 footcandles at floor level. 

The mean total path length of a single mo- 
bility course was 65 feet (20 meters). Of the 
30 total obstacles, it was expected that only 
10 or 20 might be closely encountered by the 
blind subjects as they made slight variations 
in their travel paths. The mean number of 
closely approached obstacles requiring avoid- 
ance was 12 per course. The mean free travel 
path length between obstacles was 5 feet. There 
were 6 turns per route on average. 

The mobility course and evaluation design 
philosophy has borrowed heavily from the pre- 
cepts of Armstrong (8), Kay (1), and, in par- 
ticular, Shingledecker (9), in Emerson Foulke's 
laboratory. 

Subjects . Two blind male subjects, age 28 
and 37, were utilized in these experiments. 
Neither subject possessed any degree of func- 
tional vision and each had been blind for over 
25 years. Both subjects were excellent cane 
travelers with years of practice. They each 
had over 200 hours experience with other, fixed 
tactile imaging devices. 

Procedure . Subjects were initially given 
about 15 minutes of pretrial mobility experi- 
ence with the sensory aid. They were given a 
verbal description of the nature of the courses 
and were requested to walk at a normal pace 
avoiding collisions and that the course was 
designed to keep the "shoreline" left. The 
experiment consisted of the subjects walking 
completely through xes pec t ively 39 and 48 con- 
secutive trial courses, each one selected from 
the 16 different courses , such that each course 
was different from the last. Successive trials 
were made about every five minutes . Experimental 
sessions lasted from about 15 minutes to one hr. 

The entire series of tests were recorded on 
videotape and the experimental data were ob- 
tained by a number of replays of the tape. Two 
observers with stopwatches and a counter mea- 
sured the distance and duration of each short 
path leg walked by the subject; number and 
duration of stops; number, location and type of 
collision, and number and size of head move- 
ments . 

The detailed path of the subject was record- 
ed in graphical form overlaying the plan of 
arrangement of obstacles for each course as in 
Figure 4A. A separate plot resulted for each of 
the 87 total runs. Data were correlated with 
these graphical records. 

Results . The travel safety of the blind 
subjects was scored in terms of collision 
avoidance, that is, the percent of the encoun- 
tered obstacles with which they avoided collid- 

BOX 1579, PALO ALTO CA 94302 



ing. The collision avoidance score showed a 
mean value of 91.77% for both subjects combined, 
with an initial value of 84.5% and final value 
of 95.04%; an increase of 12.5%. For subject 
B.G. the mean was 89.87%. The linear regres- 
sion fit of the data for this subject indicates 
an initial score of 86.75%, increasing to a 
final score of 92.99% for a 7.19% increase over 
39 trials. The mean collision avoidance score 
for subject L.S. was 93.31% with an initial 
score of 89.91% and a final score of 96.72%, 
an increase of 7.56% over 48 trials. This per- 
formance is shown in Figure 7 with the linear 
regression fit of the data. 

As suggested by Shingledecker (9) , the 
change in travel time with practice was ana- 
lyzed in terms of three components of travel 
efficiency: walking speed, number of stops, 
and duration of stops along the travel path. 
The mean total time to negotiate the mobility 
course was 120.3 seconds for both subjects. 
Subject B.G. took more time at the outset, 
183.4 seconds vs. 108.9 seconds for subject 
L.S. But with two hours training both subjects 
took the same final time, about 98 seconds 
mean to complete the course. During this 
experiment subject B.G. decreased his total 
travel time 46% with a mean time of 141.1 
seconds (Fig. 8) . The faster walker, subject 
L.S., decreased his total time by 10% with a 
mean of 103.3 seconds total travel time to 
complete the mobility course. 

Walking speed indoors was fairly stable at 
3.8 feet per second mean for both subjects. 
(We have observed indoor walking speed to be 
roughly half that of outdoor speed for both 
blind and sighted persons.) The mean walking 
speed for subject B.G. was ,73fps, showing a 
5.6% increase (Fig. 9). The mean walking 
speed for subject L.S. was .84fps over 48 
trials. We could not measure a change in his 
talking speed. 

The mean number of pauses or stops along 
the travel route to search for a new clear tra- 
vel path was 2.95 for both subjects combined. 
They initially made a mean of 5.11 stops de- 
creasing by 80.3% to a mean of 0.92 stops by 
the end of the experiment. Subject B.G.,with 
a mean number of stops of 3.36, showed a 72.8% 
decrease from an initial value of 5.5 stops 
to a final value of 1.2. The mean number of 
stops for subject L.S. was 2.62, with an 
initial value of 4.8 and a final value of 0.7, 
for a decrease of 85.4% during the course of 
the experiment . The mean number of stops for 
both subjects combined decreased from 5.11 
initially to 0.92 stops at the end of the 
experiment, an 80.3% decrease. 

The mean total stop and search time for 
both subjects combined was 37.5 seconds, 
varying from an initial value of 61.3 seconds 
to a final value of 13.7 seconds; a 78% de- 
crease over the duration of the experiment. 



Subject B.G. with a mean total stopped time of 
55.2 seconds decreased 88.3%; from 98.8 seconds 
initially to 11.6 seconds final value (Fig. 10). 
Subject L.S. exhibited a mean total stopped 
time of 23.2 seconds, decreasing 49.8% from 
30.9 seconds initially to a final value 15.5 
seconds . 

The mean duration of each individual stop 
and search period was 12.93 seconds for both 
subjects combined; initially 12.0 seconds, it 
actually increased to 14.89 seconds final value 
(but subjects averaged only one stop at the end 
of the experiment) . 

The PWI, or Productive Walking Index, intro- 
duced by Armstrong (8) , is a measure of the 
continuity of progress of the subject towards 
his goal . It is the percent total time spent 
actually walking. The mean PWI score for 
subject B.G. was 68.2% with an initial value 
of 48.7% and a final value of 87.7% for an 
increase of 80%, an impressive practice effect 
as shown in Figure 11. The mean PWI score for 
subject L.S. was 80.60% with an initial value 
of 74.12% and a final value of 87.12% for an 
increase of 17.48%. The mean PWI for both 
subjects was 75.04%. Initially 62.7%, with a 
final value of 87.3%; mean PWI for both sub- 
jects increased 39%. 

Discussion . The experimental results indi- 
cate that the optical information provided by 
the new tactile television sensory aid has per- 
mitted blind subjects to safely avoid most 
obstacles and to steer a clear path for suc- 
cessful and increasingly efficient indoor 
mobility. 

Apparently the device immediately provided 
them anticipatory information about the travel 
route as evidenced by their initial 85% colli- 
sion avoidance score. We are encouraged to 
believe that with considerably more practice 
subjects could learn to avoid essentially all 
obstacles, as suggested by their 95% collision 
avoidance score after only two hours of prac- 
tice, and 100% in 10 out of the last 12 trials 
for subject L.S. (Fig. 7). 

The blind subjects quickly learned to in- 
crease their travel efficiency with the sensory 
aid as shown by the 39% increase in their Produc 
tive Walking Index and 31% decrease in travel 
time during the same two hours practice. The 
most significant component contributing to the 
decreased time to complete the mobility course 
was the 80% decrease in the number of stops 
made by the subjects, resulting in a 78% de- 
crease in stop and search time. By the end of 
the experiment subjects were averaging about 
one 15 second stop for the entire 65 foot 
mobility course. The relatively long scanning 
time taken by subjects at each stop may well be 
due to their attempts to recognize details of 
obstacles and escape routes with the low reso- 
lution (3°) due to the 90° wide angle of the 
display (90°/32 lines^3°). 



WEST COAST COMPUTER FAIRE 



51 



BOX 1579, PALO ALTO CA 94302 



To meet this problem we now have designed 
and built a 16 to 1 zoom lens with a field of 
view from 10 to 160°. This will permit the 
blind pedestrian to utilize a wide field of 
view for orientation and navigation, but when 
he encounters an unrecognized obstacle he will 
be able to focus his attention by zooming down 
onto the details of the object in order to 
better recognize it. Thus, we believe subjects 
will be able to reduce their stop and search 
time. 

Because of the inordinate amount of time 
required to collect and process this type of 
information, a great body of valuable mobility 
performance and rate of learning data would go 
uncollected if an automated collection and 
reduction system were not available. We have 
designed a small, economical, dedicated micro- 
computer system to fill this need. 



Acknowledgements 

We especially acknowledge the professional 
collaboration of Mr. Bruce Smith who wrote the 
applications program which will form the basis 
of another article to be published elsewhere. 
We wish to acknowledge the expert profes- 
sional assistance of Mr. Jim Brodale in the 
preparation of the line drawings and of Ms. 
Helen Sullivan in making the photographs. We 
also express our appreciation to Miss Gail 
Matthews for her arduous efforts in producing 
this camera ready manuscript on short notice. 



References 

1. Kay, L:Conf on Eval of Sensory Aids ,NAS, 1972 

2. Nye, P:Prelim Eval of C-4 Laser Cane, NAS, 
1973 

3. Grays tone, P $ McLenan: AFB Res Bui 17, 173, 
1968 

4. Hoover, R:in Blindness , P Zahl, Princeton 
Press, 1950 

5. Collins :Proc Nat Sym on Info Display 8, 290, 
1967 

6. Collins: IEEE Trans Man -Machine Syst 11, 65, 
1970 

7. Collins § Madey: Proc San Diego Biomed Sym 
13, 1974 

8. Armstrong, J: Human Factors in Health Care , 
Pickett and Triggs (Eds) Lexington Books, 
Lexington, MA, 1975 

9. Shingledecker, C: PhD Thesis, U Louisville 
KY, 1976 

10. Gibson, J: The Senses Considered as 
Perceptual Systems , Haughton Mifflin, 
New York, NY, 1966 

ll.Strelow, ER, J.A.Brabyn and G.R.S. Clark: 
Behavioral Research Methods and Instrumenta- 
tion, 1977 



This investigation was supported by 
the Department of Health, Education and 
Welfare, Public Health Service Grant 
Number 1 R01 EY00686 from the National 
Institutes of Health, National Eye 
Institute; Grant Number 501 RR-05566 
from the Division of Research Resources; 
and Grant Number SKF1004 from the 
Smith-Kettleweli Eye Research Foundation. 



WEST COAST COMPUTER FAIRE 



52 



BOX 1579, PALO ALTO CA 94302 



MOBILITY COURSE AREA 



ULTRASONIC TRACKING SYSTEM 

Ultrasonic 
Receiver No. 2 




*► X 



Coordinates 
of Pedestrian 



Ultrasonic 
Receiver No. 1 



Fig. 1. Schematic layout of the microcomputer 
controlled ultrasonic locator system for 
generating the X-Y coordinates of a blind 
pedestrian from ultrasonic triangulation data. 




Fig. 2A. Components of the ultrasonic 
locator system for blind mobility tracking. 
The RF receiver is the small box in the center 
foreground with its trailing antenna. This 
receiver is generally worn on the belt of the 
blind pedestrian. The ultrasonic transmitter 
is shown in the right foreground as a small 
omnidirectional ultrasonic loudspeaker mounted 
on a lightweight headband worn by the pedes- 
trian being tracked. The RF transmitter is 
in the left foreground and the IMSAI 8080 
microcomputer in the lower background. The 
control terminal on the right and the output 
display graphics monitor is on the left. The 
blind pedestrian's path is traced out in detail 
on this monitor. The sequential coordinates of 
this path are stored in memory and subsequently 
dumped onto a cassette recorder (not shown) 
when the 64K memory is full. 




Fig. 2B. The microcomputer controlled ultra- 
sonic locator system showing the components in 
use. The subject is wearing the lightweight 
ultrasonic transmitter (loudspeaker) on his 
head and he carries the RF receiver. The two 
microphones (on stands at the far edges of the 
picture) pick up the ultrasonic pulses from the 
subject and deliver them to the .uicrocomputer 
which continuously computes the X-Y coordinates 
of the subject and plots them on the graphics 
monitor screen (left background) . 



WEST COAST COMPUTER FAIRE 



53 



BOX 1579, PALO ALTO CA 94302 



ALS-8 



64K 
RAM 



□ 



BYTE- 
SAVER 



CPU 



24X80 
VIDEO 



PROGRAM 



INTERRUPTS 



INPUT/ 
OUTPUT 



TT\ I I ;=}£ PIC " 



TERMINAL 




-VV- 
-VV- 



3P+S 

START, i 
R/S. 4 \ 
SELECT 



c 



CASSETTE 




E3z=r 



-8 

CLOCK 



\mv 



CTR-MUX 



n a 



256*2 
GRAPHICS 



i 




GRAPHICS 



MASS STORAGE 






SONIC 
RCVR. 



R.F. 
STROBE 



5°v;--- 



th=£, 



RIGHT 



MIC 

□ 



LEFT 



^ 
S 



^ 



SONIC 

XCVR. 
j-j. 




Fig. 3. The hardware complement of the micro- 
computer controlled ultrasonic locator system 
(described fully in the text in the X-Y 
coordinate computation section) . 



WEST COAST COMPUTER FAIRE 



54 



BOX 1579. PALO ALTO CA 94302 




10' 15' 20 

TYPICAL OBSTACLE COURSE <20'x30'ROOM) 

Pig. 4A. (Top) Plan of one of the 16 mobility 
courses with a typical path walked by a blind 
subject. Note he avoided all obstacles 
(except the small basket on the floor) and 
found a clear path through the maze of 
obstacles with only the tactile mobility aid. 



Fig. 4B. (Bottom) CRT tracing of a similar 
path of subject plotted by ultrasonic tracking 
device and objective microcomputer evaluation 
system. 



MINIATURE TV CAMERA 



THIN FLEXIBLE CAMERA CABLE 




ELECTRONIC VIDEO 
PROCESSING AND 
DRIVING CIRCUITRY 



CONNECTOR CABLE 



10 INCH SQUARE 

FLEXIBLE STIMULATOR 

MATRIX AGAINST SKIN 



Fig. 5. Artist*s conception of the 1024-point 
fully portable electrotactile mobility aid. 
The miniature TV camera mounted on a pair of 
glasses permits the object at which the wearer 
points his head to be imaged on the skin of 
his abdomen. The image is converted to a 
pattern of electronic pulses applied to the 
skin by an array of small electrodes in a 
flexible undergarment. 




Fig. 6. One of the 16 furniture arrangements 
of the indoor mobility course used for blind 
mobility tests. Course required subject to 
avoid overhang (in background) , and thread 
between chairs and tables. In the background 
is a cul-de-sac of tables he was required to 
negotiate. 



WEST COAST COMPUTER FAIRE 



55 



BOX 1579, PALO ALTO CA 94302 



^ 100 

c 

0) 

o 

0) 

a 



CD 

o 

c 

CO 

■g 

o 

> 
< 

c 
o 

CO 
CO 

o 
O 



80- 



60 



■♦• 4- 4>++-t-+ 4- -#■ 



4-"*-*-+4-4- +4"*-+ >♦• 







LS 



10 



20 
Trial 



30 
Number 



40 



50 



Fig. 7. Collision avoidance mobility data is 
one measure of blind pedestrian safety with a 
sensory aid. Here, performance improves over 
48 trials. 




10 



20 30 40 

Trial Number 



50 



Fig. 8. Total time to complete each course is 
a measure of efficiency of blind mobility. 



WEST COAST COMPUTER FAIRE 



56 



BOX 1579. PALO ALTO CA 94302 




;uaoJ9d 'ewii ipjeas 



O (D 
CO .Q 

E 



cm i- 



"* CM O CO CO TT CM 

oas/;aaj paads Buj^ibm 



4J 
O 

•m 
.Q 

a 
w 

<u 

c 
o 

o 

TJ 
<D 
(V 
CU 
0) 

D» 

c 
JX 

H 

2 



0> 
•H 

fa 





















>i 


















W HI 














o 




•H rH 
















IT) 




to 










o 










~. a 










m 










M 4J 

ft «3 




\ + 


+ 
+ 


f 








o 




4J 

X c 

CD CD 

c w 




















M 


V 
t 


















CD 


4- 














o 




C -h 


+ 














CO 




•H 4J 


4 




\ + 
\ + 












E 


















2 


ns m 


t 
















<d 


* ■£ 


+ 


* 


\ + 
♦ \ 

\ + 
+ \ 

\ + 

+\ 
\ + 
\ + 


4- 








o 

CM 






> 

•H CU 
4J JC 
O -*J 

3 








\ + 


+ 








o 




04 -M 






♦ \ 














G 




* 
















CU 




* 


+ \ 




+ 


+ 








. 11. 

perc 
king. 


o 


o 


o 


o 




o 


o 




01 CO H 


o 


co 


CO 


"tf 




CM 






•H X! « 




















C* -P £ 



IMd '9LU|1 6UI>||B/V\ luaojad 



WEST COAST COMPUTER FAIRE 



57 



BOX 1579, PALO ALTO CA 94302 



THE DESIGN OF A VOICE OUTPUT ADAPTER FOR COMPUTER 

William F. Jolitz, 212U Parker Street, Apt. 309, Berkeley, CA 9^704 

ABSTRACT 

The design of a Voice Output Adapter for visually handicapped 
computer programmers is discussed. This device, based on a 
DEC LSI-11 microcomputer and a VOTRAX VS-6 synthesizer will 
generate speech from ordinary typed text. Phonetic translation 
is accomplished by a set of rules, instead of a dictionary. 
Although this device uses a VOTRAX synthesizer, and experimen- 
tation has been limited to English, the device will act inde- 
pendently of language or synthesizer type. All software will 
reside in the main memory; no peripheral memory will be used. 
This results in a compact device. 



Introduction 



Attempts have been made to use speech syn- 
thesis to aid visually handicapped people, but 
most have not encountered great success. Often, 
these attempts were too costly, too complex, too 
limited or otherwise impractical. An attempt L13 
is currently being made to break this "practi- 
cality" barrier by designing an inexpensive de- 
vice which couples a Hewlett-Packard HP 9825A 
desk-top calculator (see A-l) to a VOTRAX VS-6 
voice synthesizer. This voice display will 
allow completely unhindered use of the calcula- 
tor by unsighted operators, and will require no 
extra training to use. Since the unit is based 
on a microprocessor, it will be compact and 
relatively inexpensive — two features which 
lend themselves to mass manufacturing. The de- 
signed- system is not language" or hardware "deperr- 
dent. It is possible to have a multilingual de- 
sign and/or interface to other computers or 
calculators . 

Why Voice ? There are different methods 
that can be used to present computer output to 
the blind. A method that has been widely em- 
ployed is using a Braille terminal to translate 
a line of text into Braille embossings, which is 
a direct method of approaching the problem, but 
one with some limitations. Some of the limita- 
tions of this Braille method are that it re- 
quires copious quantities of consumable paper, 
prints at a slow rate and requires Braille 
training. 

An alternative method is to use voice out- 
put from a speech synthesis unit. This method 
has not been frequently used, primarily due to 
the high cost of the hardware. However, with 
the recent revolutions in the microelectronics 
area (which made personal computing a reality), 
this is no longer a problem. 

Voice methods seem to complement Braille 
methods, in that they require no consumables 



(except, of course, electricity;, communicate 
very rapidly, and require no training. Extend- 
ing this thought further, Braille methods leave 
hardcopy, while voice methods are suited for 
interactive use. The differences are similar tc 
those found when choosing either a CRT or a 
printer type terminal, and this simile is accu- 
rate enough to predict where voice or Braille 
(or both) can fit into an application. 

In data entry applications, hardcopy is a 
hindrance, so CRT terminals are used. Con- 
versely, CRT terminals are a hindrance when com- 
posing programs, since often you need hardcopy 
to refer to later. Hardcopy has nice properties 
that are easy to handle , easy to transport , and 
hardcopy is useful in discussing program/data 
text among a group. Many computer systems mix 
both types of devices to take advantage of both. 

Another— advantage - of the voice method is 

that it can be used by sighted users to double 
check data entry. Feedback of this kind has 
been found to be very efficient at detecting 
entry errors in a flight research experimental 
In addition, an easy-to-use speech synthesis 
system (as this basically is) allows for mis- 
cellaneous special purpose applications (paging 
systems, etc.) Voice is a good medium for get- 
ting a short message across from a computer to a 
person. 

A Sample Session With The Voice Display 
System . In order to understand this voice 
system, let us look at how it will work in use. 
In the following example (see A-2), the operator 
will type a one-line program into the calculator 
which will display "hello" on the calculator's 
display panel when run. The "dsp" mnemonic is 
a calculator function to display text on the 
display panel. As can be seen in the example, 
the operator presses a key on the calculator, 
then the key's name is spoken by the synthe- 
sizer. This is called echo-feedback, and it's 
purpose is to allow the user to monitor text 



WEST COAST COMPUTER FAIRE 



58 



BOX 1579, PALO ALTO CA 94302 



input on a character by character basis. When 
the operator presses the store key, the calcu- 
lator accepts the typed line of text as a pro- 
gram step. Upon observing the calculator accep- 
ting the program step, the voice system reads it 
out word by word. The operator can execute the 
program by pressing the run button, where the 
entered program then writes "hello" on the dis- 
play (which the voice system reads out) and 
stops. To review the program entry, the opera- 
tor can choose to "fetch" it, whereby the pro- 
gram step is read out as it is displayed. 

Basically, the calculator's display is ex- 
pressed with speech instead of print. It is as 
if you had a person reading the display for 
someone who was entering a program but could 
not see the display. 

Prototype Philosophy . The intent of this 
project is to show that an inexpensive device to 
aid blind computer programmers can be made. No 
attempt is being made to engineer a product; all 
that we intend to do is demonstrate the ideas 
for such a product with a working model. All 
equipment is stock, with the lion's share bor- 
rowed from various parts of NASA Ames Research 
Center, Digital Equipment Corporation and the 
Sensory Aids Foundation. All software is gen- 
erated in the high level language, £, £33 for 
ease of programming (in systems programming 
applications, £ is the APL of computer langu- 
ages ) . Any additional reduction in program 
size, through using assembly language, would 
mean a larger cost in programming time and 
frustration (anyway the C compiler used gener- 
ates size optimized code). 

Hardware 

Practicality is a main concern in the 
design of this system. Hardware was chosen with 
availability in mind. Although no attempt was 
made to compact hardware, it was felt that 
overly large hardware would obscure the basic 
concept of practicality. Hardware was chosen 
whenever possible to reduce size. As a result, 
all of the hardware associated with this project 
(less printer) is about the size of a breadbox. 
If one were to custom design the hardware (less 
printer) with no major changes, except for re- 
moving redundant and unnecessary circuitry, one 
would probably have a well-stuffed 8" x 10" 
board. Given future (fourth quarter 1978) tech- 
nology, such a board could probably be built in 
a fourth of the size and at half the cost. 

The hardware that is used for this project 
consists of: 

1. DEC LSI-11 microcomputer (see A-3) 

2. VOTRAX VS-6 Voice Synthesizer 

3. Intercept Interface 
k. Triformations, Inc. BD-3 Braille 

strip printer 

LSI-11. Microcomputer selection was based 



solely on processing speed, physical size, and 
high level language support. Processing speed 
is really a function of what kind of operations 
are most frequently performed. For the speech 
synthesis software, it was empirically discov- 
ered that 16 bit pointer arithmetic operations 
would be the most common (J0% of the time the 
software is searching or indirecting through 
matrices, many larger than 256 bytes long). 
The LSI-11 was chosen because it can handle 
pointer arithmetic more rapidly than other 
available choices (Z-80,8o85,6800) . A high 
level language (C_) was also available that gen- 
erated efficient code. 

VOTRAX Synthesizer . Speech synthesizers 
are constantly improving, as need for clearer 
speech is required. The pace of such change is 
so great that last year's products usually are 
surprisingly outmoded by current products. The 
synthesizer unit used in this project is an 
example of this; although it has moderately good 
performance (intelligibility), in a few months 
it will probably be superseded. However, this 
unit was chosen because it was available, and it 
generates reasonably clear speech. It has a 6k 
phoneme sound-capacity with four possible levels 
of inflection (one should remember that a 
phoneme is somewhat of an abstract concept of 
being a basic sound from which words are made 
up. Also, phonemes vary between languages and 
dialects. When a manufacturer advertises a de- 
vice with a capacity of 6k phonemes, this means 
the device has 6k available sounds which mimic 
some basic sounds in a dialect of a language; 
usually not complete in coverage.) 

Intercept Interface . At the start of this 
project, some limitations were placed on the 
interface hardware. One was that no modifica- 
tions of any kind would be made of the calcula- 
tor. In other words, access to the signals com- 
ing from the calculator's keyboard could not be 
made via "pick offs" on the circuit boards of 
the calculator, but instead must be made in a 
more civilized manner by attaching to some con- 
nector already available on the outside of the 
calculator. It was found that keyboard and dis- 
play data could be obtained by subtle decoding 
of the calculator's I/O bus. The device which 
will accomplish such decoding is known as the 
Intercept Interface, which is presently being 
created by NASA Engineer, Donald Billings. By 
using a Hewlett-Packard built card assembly to 
buffer calculator data bus lines, no direct 
electrical connection will be made to the calcu- 
lator from the microcomputer, so both units will 
be isolated. 

Triformations Braille Printer . Rounding 
out the systems hardware completely, a Braille 
printer from Triformations, Inc. allows limited 
hardcopy use. Although the main emphasis in 
this project is to demonstrate voice methods, 



WEST COAST COMPUTER FA! RE 



59 



BOX 1579, PALO ALTO CA 94302 



some hardcopy capability is desirable (good 
engineering practice). The BD-3 printer used 
here, embosses Braille on a strip of paper 
(Braille ticker tape!) Something should be men- 
tioned about Braille: Contrary to popular be- 
lief, not all visually handicapped people read 
Braille. Many use low vision aids, which allow 
them to read with what limited vision they have 
left, by hand scanning a portable TV camera over 
text which is viewed on a TV screen. 

Software 

The voice system has a large amount of 
software, most of it is concerned with translat- 
ing text strings into phonetic strings. There 
are five major procedures: 

1. Primative - I/O Monitor (PRIM) 

2. Pronunciation by Rule (RULE) 

3. Statement Symbol Translator (SYMBOL) 
k. Display Parser (PARSE) 

5. Braille Code Converter (CODE) 
The interaction among these procedures is illus- 
trated, (see A-k) . Before discussing this fig- 
ure, the individual procedures should be des- 
cribed. 

PRIM . The Primative I/O Monitor functions 
as a buffer to the I/O devices for the main pro- 
cedures. All device-dependent code is present 
here, so that communication between device and 
system software is via queues. Housekeeping 
functions, like device error detection/recovery, 
are also PRIM's responsibilities. By organizing 
the monitor this way, only one procedure must be 
modified to allow for different hardware. 

RULE . To allow for a flexible vocabulary, 
pronunciation by rule was chosen as the method 

to 'convert text into 'phonetic : text, which is 

more palatable to the voice synthesizer. Proce- 
dure RULE will accomplish this by checking input 
text for rules that might apply and performing 
simple transformations on the text when the 
given rule applies (done in real time). Some of 
these transformations are quite simple, like 
removing the silent "e" from the ends of words, 
while others search for sinister medial vowels 
(like the "e" in "houseboat"). A very readable 
article by Allen CUJ describes this process 
well, including both successes and failures of 
rule sets (a translation example from this paper 
is reprinted, see A-5). Failures usually result 
in comprehensible but unusually pronounced words 
(not unlike the way a young child will pronounce 
a new word). A study of a rule system, similar 
to the one that will be used here, shows that it 
produces intelligible speech on 91% of running 
text C5}. Considering that it is almost impos- 
sible to maintain a dictionary of such scope 
(also considering accessing such data in real 
time), this is very reasonable performance. 
This capability is achieved by approximately 800 
rules. The number of rules is limited by 



computer speed and memory storage; it is con- 
ceivable that with faster computers and larger 
memory, performance could be increased. 

In RULE no special processing is done that 
is particular to English language. Only gener- 
alized rules are used, allowing this system to 
be used with other languages. To change langu- 
ages, all that is required is: 1) a new set of 
rules to express phonetic transcription of the 
language, 2) new symbol translation table, and 
3) new voice synthesizer (only needed if new 
language has a different set of phonemes ; in the 
case of Spanish, a trilled r is needed, and in 
German vowels like u are also required) . It 
would be possible to have a multilingual unit 
where rule sets could be selected (probably by 
means of a memory bank switch), provided the 
voice synthesizer has a large enough selection 
of phonemes . 

SYMBOL. A particular problem with most 
computer languages is that they contain unpro- 
nounceable expressions, like */+>=" etc. 
which must be pronounced by use of a symbol dic- 
tionary. This is the function of SYMBOL, to 
pronounce programming language symbols. SYMBOL 
will be large, due in part to the large number 
of program symbols (approx. 200) the calculator 
has (this includes program mnemonics, like prt 
for print, gto for go to, ell for call, etc.) 
In addition to pronouncing symbols, keyboard 
echo feedback is accomplished by this module (to 
avoid unnecessary duplication of code). 



PARSE. 



In order to separate program 



symbols from English text that is input to the 
system, a simple LR parser is used to make the 
distinction. PARSE does not blindly separate 
symbols and English, but instead attempts to 
determine if -the -given- text should --be- eons-idered 
as English text, program symbols, or raw program 
data, or a mixture of both. For example, we can 
have the program symbol "prt" (meaning print), 
or the English text "prt" (unpronounceable), or 
program data "prt" (pea are tee). Only syntax 
can decide (not always successfully though) 
which one of these ways the symbols should be 
treated. 

CODE . A problem in using Braille printout 
for computer use is that standard Braille does 
not have all the special symbols required by 
most programming languages. The disparity be- 
tween standard Braille and ASCII character sets 
is quite large. The differences are critical, 
as a line of program code that might appear 
(in say BASIC) as: P=Xt3 + 20 * X * Y + 3/Z 
would have the Braille form of P=X3 + 20XY + 3Z; 
which Is totally different in meaning. There 
are a few methods to deal with this difficulty; 
the Braille character set can be expanded, or 
the unrepresented characters can be expressed as 
combinations of existing characters. Expanding 
the Braille character set has the obvious prob- 



WEST COAST COMPUTER FAIRE 



60 



BOX 1579, PALO ALTO CA 94302 



lems associated with changing a -widely used 
standard (can you imagine all the trouble that 
might occur if ASCII was extended from 7 to 9 
bits /character?) Playing with such standards 
shouldn't be done lightly, as it might have dis- 
astrous consequences for general purpose use 
(for example, making Braille much more difficult 
to learn or use). 

To avoid these problems, one can use the 
standard code and use combinations of characters 
to represent special characters, like using 
"greater than" to represent ">". This has the 
advantage of incorporating all character sets 
that can be described (i.e. in APL, EJbecomes 
"quad quote", but there is difficulty with an 
arbitrary symbol like §J ! ) A disadvantage is 
that it now takes 8-10 characters to repre- 
sent one symbol, which wouldn't be bad if it 
wasn't for the fact that Braille takes up 
four to six times as much space to print 
as standard text. The compromise that has 
been chosen is to use compressed mnemonics, like 
"cln" for ":". 

With the above adjustment in character 
sets, the Braille software allows listing of the 
calculator's program on the Braille printer. An 
ideal situation would be to list Braille and 
typed versions simultaneously on the same 
paper in adjacent columns. This would allow 
easy discussion of the program between sighted 
and unsighted programmers, as each could locate 
errors or discuss critical sections without 
shuffling around. Unfortunately, this takes 
special hardware which is not available. 



by using a set of rules. Echo feedback of the 
calculator keyboard is also done by the micro- 
computer. In addition to the voice system, a 
Braille strip printer will be used to provide 
hardcopy on demand. The complete system will 
be compact and portable. 



How It All Fits Together . The software 
procedures described interact with each other 
along the lines in the Program Interaction 
Graph (see A-U). PRIM acts as a transparent 
buffer to the other four procedures by perform- 
ing I/O functions to/from a device, from/to a 
queue. PARSE reads the current display line 
from a queue, and then separates the line 
according to item type to either SYMBOL or RULE. 
SYMBOL and RULE translate their text into 
phonemes, which are left in the voice synthe- 
sizer's queue. SYMBOL also examines individual 
keypresses from the keyboard and echoes their 
name with the synthesizer. Finally, CODE trans- 
lates any printing requests into expanded 
Braille format and outputs reformatted text to 
the Braille printer. 

Conclusion 

A system has been described here which will 
allow the visually handicapped to use an 
HP 9825A desk-top calculator, by means of voice 
communication from a VOTRAX voice synthesizer. 
An LSI-11 microcomputer will translate program 
and written text into phonetic text for the 
synthesizer. This translation is accomplished 



WEST COAST COMPUTER FAIRE 



61 



BOX 1579. PALO ALTO CA 94302 



ACKNOWLEDGMENTS 



This work was supported by the 

National Aeronautics and Space Administration, 

Contract A^576B. 

Special recognition should be given to 

Susan Phillips of the Sensory Aids Foundation 

for her help in promoting this project. 



REFERENCES 



ClJ National Aeronautics and Space Administration, Contract AU576B. 

£2J Elson, Benjamin M., "Inexpensive Avionics Concepts Being Sought," 
Aviation & Space Week , August 1, 1977. 

£33 Ritchie, D. M., C Reference Manual , Bell Laboratories, 

Murray Hill, N. J. 07979 

DO Allen, Jonathan, "Speech Synthesis from Unrestricted Text," 

from a collection of papers in Speech Synthesis , edited by Rabiner. 

C5J Mcllroy, M. Douglas, "Synthetic English Speech by Rule", 
Bell Telephone Laboratories, Murray Hill, N. J. 07979. 




A-l Text Accompanying Photo 

"The HP 9825A Calculator is seen here in use. 
The dark window near the top is a 32 character 
LED-ASCII display. The VOTRAX VS-6 Voice 
Synthesizer is the large box sitting on top of 
the calculator. Voice pitch, speech rate and 
volume are adjustable from the potentiometers 
on the front of the case." 

WEST COAST COMPUTER FAIRE 62 BOX 1579, PALO ALTO CA 94302 



A-2 



Operator (Keypresses ! 



d 
s 
P 

h 
e 
1 
1 
o 

n 

store 



run 
fetch 


execute 



SAMPLE SESSION EXAMPLE 

Calculator Display 

d 
ds 
dsp 
dsp " 
dsp "h 
dsp "he 
dsp "hel 
dsp "hell 
dsp "hello 
dsp "hello" 
0: dsp "hello" 



hello 
fetch 
fetch 
dsp "hello" 



Voice Output 

dee 

es 

pea 

quote 

hay-ch 

ee 

el 

el 

oh 

quote 

store step zero display 

quote hello quote 



run hello 

fetch 

zero 

execute step zero display 

quote hello quote 

Note: THis HP9825 calculator uses STORE as an end-of-line button for program 

statements and uses EXECUTE for indicating end-of-command. 




#§>*, 



A-3 Text Accompanying Photo 

"Here is a Digital Equipment Corp. LSI-11 
microcomputer. The five large chips on the 
facing "board contain the microprocessor and 
its control store. In the background can be 
seen supporting power supplies and console 
teletype." 



WEST COAST COMPUTER FAIRE 



63 



BOX 1579, PALO ALTO CA 94302 



A-4 



70 Devices 



VOIRAX VS-6 

VOICE 

3 YNT H E SIZE ?. 



INTERCEPT 
INTERFACE 



TRIFORMATIONS 
MODEL BD-3 
BRAILLE PRINTER 



Queues 



Main Procedures 



PHOKEML- ■ 




KEYBOARD 



DISPLAY 



b.---.t 

SPEECH SYNTHESIS 
BY R^JLE 



SYMBOL 

STATEMENT SYMBOL 
TRANSLATOR 



T 



PARSE 



jR PARSER 



\ 


PRINTER 






CODE 
BRAILLE 

CODE 
CONVERTER 















A-5 



# CHROME # 

# CHROME # 

# KRSMS # 

# KROM # 



Reprinted from Allen zh'j 



# MYTHOLOGY # 

# MYTH + OLOGY # 

# MB A TSSBSSB # 

# M A I A T+ A ALY\JE # 

# DISPASSIONATELY # 

# DIS = PA SSION + ATE + LY # 

# BSSSPSS ••• 5 # 

# D*IS=P"A A SYN+YT + LE# 



=weak vowel 
sound 
(like "uh") 

" =plosive 

= ,+*=pause 



LETTER-TO-SOUND CONVERSION 



WEST COAST COMPUTER FAIRE 



64 



BOX 1579, PALO ALTO CA 94302 



DEVELOPMENT OF PROTOTYPE EQUIPMENT TO ENABLE 
THE BLIND TO BE TELEPHONE OPERATORS 

Susan Halle Phillips 

Vocational Coordinator 

Sensory Aids Foundation 

399 Sherman Avenue, Suite 4 

Palo Alto, California 94306 

(415) 329-0430 



I 



This report describes the deve- 
lopment of prototype equipment to inter- 
face a blind telephone operator to a 
TSPS console. Sensory Aids Foundation 
contracted with Telesensory Systems Inc. 
to build an interface utilizing voice 
output to determine if a blind telephone 
operator could perform the job of TSPS 
operator within the performance require- 
ments set by Pacific Telephone Company 
for sighted operators. 

The system has been successfully 
tested and two persons have been placed 
as operators within the Pacific Telephone 
System. This project will now enable 
blind people to be competitive for job 
placement within the Bell Telephone 
System. 



Sensory Aids Foundation, a non-profit 
corporation, and the California Depart- 
ment of Rehabilitation established a 
program to develop new employment oppor- 
tunities for job ready persons who are 
blind. This jointly funded grant provides 
for the expansion of entry level occupa- 
tions through the application of sensory 
aids and the development of new adaptive 
devices. During the first two years of 
the Innovation and Expansion Project, 63 
blind and partially-sighted individuals 
were placed in a variety of employment 
settings. 

One of the primary engineering pro- 
jects initiated by Sensory Aids Founda- 
tion was the development of prototype 
interface equipment for blind TSPS 
(Traffic Service Position System) opera- 
tors. The goal of this project was to 
open the TSPS operator position with 
Pacific Telephone Company to blind people 
and to enable them to perform the job 
competitively within the standards set 
by the Telephone Company for sighted 
empl oyees . 

The TSPS is the specific console 
used by Pacific Telephone Company long- 
distance telephone operators to perform 
their jobs. Generally, the TSPS computer 



console handles all calls requiring operator 
assistance, with the exception of "informa- 
tion" number requests. Sensory Aids Founda- 
tion contracted with Telesensory Systems Inc., 
Palo Alto, to build two prototypes of TSPS 
console overlays which monitored nixie tubes 
and 72 lighted indicator lamps and buttons 
with voice output systems, utilizing the 
Votrax Voice Synthesizer. The voice output 
prototypes would give to the blind operator 
audible information that a sighted operator 
sees. This information is necessary for 
the operator to recognize the state of the 
console and to service customer requests. 

System Design 

The various elements of the TSPS Inter- 
face System are illustrated in Figure A-l. 
At the top of the figure is the TSPS console 
itself. It consists of the nixie tube dis- 
play and the operator control panel with 
lighted pushbuttons and indicators. The 
overlay is placed directly over the operator 
control panel. Each button on the overlay 
is made from clear acrylic and is provided 
with a photo-transister to sense if the button 
is illuminated. Because the buttons are 
transparent, the status of the console may 
be determined by a sighted operator. This 
is important both in training and when the 
supervisor needs to assist in handling a call. 

The Optical Sensing System is placed 
into the recess formed by the housing of the 
nixie tube display, as illustrated in Figure 
A-2. This system is composed of 12 identical 
modules each sensing a single nixie tube and 
thus avoids the difficulties of mechanical 
scanning. The system is both removable and 
portable; an adjustment is provided to align 
the Optical Sensing System to a particular 
console. 

The Interface/Control Electronics 
Module accepts commands from the Operator 
Control Box, processes data from the Optical 
Sensing System and console overlay, and 
generates suitable output to a Votrax Voice 
Synthesizer. The output from the Votrax is 
presented to the operator via a second ear- 
phone. With this control box, the operator 



WEST COAST COMPUTER FAIRE 



65 BOX 1 579. PALO ALTO CA 94302 



can manually interrogate various sec- 
tions of the console or read the nixie 
tube display, as illustrated in Figure 
A- 3. The entire system is carried on a 
moveable cart with self-contained power 
fupply, as illustrated in Figure A-4. 
The output of a 12 volt DC battery is 
converted to 115 AC by an inverter and 
provides enough power for at least 8 
hours of continuous operation. A battery 
charger is also provided so that the 
entire system may be recharged when not 
in use or at the end of the shift. 

System Operation 

As a call comes in to the TSPS con- 
sole, appropriate lamps light up which 
signal the kind of call, class, and 
charge. For a blind person to service 
the incoming call, these visual cues 
must be transformed into spoken words. 

A step by step outline of the pro- 
cess is as follows: 

a) An incoming telephone call sti- 
mulates a specific pattern of lamps to 
light on the TSPS panel; 

b) The computer recognizes which 
lamps are lit via photosensors on the 
overlay; 

c) The computer determines which 
words should be spoken; 

d) The computer signals the Votrax 
and speech begins. 

Spoken words from the Votrax give 

tire- -blind operator the cues whic.h__t.he__ 

sighted operator obtains visually. These 
cues are necessary to make the appro- 
priate response to the customer. 

Figure A-5 illustrates the TSPS 
console position for two operators. The 
right side has the interface prototype 
equipment for the blind operator. 

Additional Equipment Modification 

A second important part of the pro- 
ject was to modify the job station equip- 
ment, other than the TSPS console, so 
that it could be efficiently used by the 
blind operator. 

Operators must continually refer to 
handwritten notes in order to remember 
names when making person-to-person or 
• collect calls, rate-and-route informa- 
tion for overseas calls, and other infor- 
mation used in filling out manual billing 
tickets. A suitable device was needed 
for blind telephone operators. Equip- 
ment on site could not be noisy. A quiet, 
sturdy, small brail ler was purchased 



for this purpose from the Royal National 
Institute for the Blind, London, England. 
Information stored on plastic cards used by 
all TSPS operators, including area codes, 
operator codes, numbers of business offices, 
repair services, and emergency numbers were 
brail led in a format designed by the Sensory 
Aids Foundation Staff. A template (Manock 
Comprehensive Designs, Palo Alto) was designed 
to enable the blind operator to complete the 
Mark Sense computer ticket. The blind opera- 
tor was then able to transfer information 
from the braille notes to the billing ticket 
by lifting the template over the ticket and 
using a Mark Sense pencil to mark appropriate 
digits. 

Summary 

As a result of cooperative efforts 
between the Sensory Aids Foundation, Tele- 
sensory Systems Inc. and Pacific Telephone 
Company, adaptive equipment and job station 
modification to enable the blind to function 
as TSPS console operators have been success- 
fully developed. Using prototype console 
overlays, two totally blind individuals have 
been competitively placed as TSPS operators 
in the Mountain View, California Pacific 
Telephone System. With the success of this 
pilot project, it is anticipated that the 
TSPS interface equipment will permit the 
blind to be hired as telephone operators 
throughout the Bell System. 

Acknowledgements 

I wish to express appreciation to A.J. 
Sword, M. Linvill , "J'V Azevedo and D. Farr 
for providing technical assistance and photo- 
graphs, and to C. Anderson for secretarial 
assistance. 



Appendix 

Figure A- 

Figure A- 
Figure A- 

Figure A- 
Figure A- 



1 Prototype TSPS Interface 
Equipment - Schematic 

2 Nixie Tube Display Reader 

3 TSPS Console with Overlay, Nixie 
Tube Reader and Control Box 

4 TSPS Interface Equipment 

5 TSPS Console Position 



WEST COAST COMPUTER FAIRE 



66 



BOX 1579, PALO ALTO CA 94302 



TSPS CONSOLE 



OPERATOR CONTROL 
PANEL 



NIXIE TUBE 
DISPLAY 





COMPLETE OVERLAY 

WITH 

PHOTOSENSORS 



OPTICAL SENSING 
SYSTEM 




INTERFACE 

CONTROL ELECTRONICS 

AND POWER 



* 



VOICE 
SYNTHESIZER 




OPERATOR 
CONTROL BOX 



EARPHONE 



Figure: A-l 



Prototype TSPS Interface 
Equipment - Schematic 



WEST COAST COMPUTER FAIRE 



67 



BOX 1579, PALO ALTO CA 94302 




FIGURE A-2 

Nixie Tube Display Reader 




FIGURE A-3 

TSPS console with overlay, nixie tube reader & control box 



WEST COAST COMPUTER FAIRE 



68 



BOX 1579, PALO ALTO CA 94302 




FIGURE A-4 

TSPS Interface equipment 




FIGURE A-5 

TSPS Console position 



WEST COAST COMPUTER FAIRE 



69 



BOX 1579. PALO ALTO CA 94302 



MICROCOMPUTER-BASED SENSORY AIDS 
FOR THE HANDICAPPED 



J.S. Bruqler, Ph.D. 

Vice President Engineering 

Telesensory Systems, Inc. 

3408 Hi 11 view Avenue 

Palo Alto, CA 



INTRODUCTION 

Telesensory Systems, Inc. was formed in 
order to provide high technology aids for the 
handicapped, especially the blind. Nearly all 
of our recent projects have utilized micro- 
computer technology. The resultant programmable 
aids provide performance and flexibility impos- 
sible to achieve in the past. This paper gives 
details of five of these devices - the SPEECH+ 
talking calculator for the blind, the TSPS tele- 
phone console interface for a blind operator, 
The Games Center for the blind, the Crib-O-Gram, 
and the LSI Speech Synthesizer. Some of these 
devices will also be demonstrated. 



SPEECH+ 

The SPEECH+ is a hand held, battery op- 
erated calculator developed expressly for the 
blind. Our research concluded that speech is 
the most effective calculator display modality. 
SPEECH+ therefore contains a built-in limited 
vocabulary speech synthesizer which provides the 
blind user with spoken speech verification of 
every keystroke and readout of the display upon 
command. The speech unit also indicates over- 
flow and low battery conditions. In addition to 
English, units speaking German, French, and 
Arabic have been programmed. 

Inside the unit, speech and control data 
are stored on a single 16K bit mask-programmed 
ROM. A custom LSI microcontroller chip accepts 
input commands and looks up the "recipe" for 
speaking the desired word. It then constructs 
the proper speech waveform from the stored 
speech data. To reduce storage costs, a number 
of unique encoding schemes are used. The key- 
board scanning, calculating and speech code 
generation are done by a TMS-1000 single-chip 
microprocessor. The use of three large chips - 
the custom microcontroller, the TMS-1000, and 
the 16K ROM - plus a minimum of support cir- 
cuitry enable a convenient portable unit to be 
made available at reasonable cost. 



Since the speech data is stored in 
ROM, vocabularies are easily changed. In 
addition to foreign vocabularies, other 
speech vocabularies can be generated. To 
try other application besides the calculator, 
a "general purpose" and an ASCII vocabulary 
have been programmed. Potential applications 
being explored include talking elevators, 
talking meters, and talking computer termi- 
nals. 

TSPS 

The telephone operator's job, being 
auditory, has in the past been very well- 
suited for the blind. The introduction of 
computer-based "TSPS" telephone exchange 
systems having many visual cues for the 
operator has made the job impossible for a 
blind person. TSI undertook a demonstra- 
tion project to develop interface equipment 
which would enable a blind TSPS operator to 
compete successfully with a sighted TSPS 
operator. 

The TSPS (Traffic Service Position 
System) console used by the operator is a 
special purpose computer terminal containing 
over 80 pushbuttons and a 12-digit numeric 
display. The hardware we developed is 
based on a 6800 microcomputer. In operation, 
special optoelectronic circuits read the 
lighted pushbutton and numeric display 
status information into the computer. The 
computer interprets the input data and 
tells the blind operator, via synthesized 
voice, the information necessary to handle 
an incoming call. Once a call is serviced, 
the computer continues to monitor the 
console to verify that the call was completed 
properly. Since a bewildering variety of 
type of incoming calls are possible, the 
details of the system operation are quite 
complex, and have undergone considerable 
evolution. An important feature is the 
ability of the operator to interrogate 
several important console parameters. 



WEST COAST COMPUTER FAIRE 



70 



BOX 1579, PALO ALTO CA 94302 



Two demonstration systems were 
built, and are being used every day by 
two blind operators at Pacific Telephone. 
Quantitative performance measures are 
quite encouraging, and we are seeking 
funding to production engineer the system 
to enable widespread usage. 



THE GAME CENTER 

The availability of low-cost speech 
technology, keyboards, and microcomputer 
know-how prompted us to breadboard a set 
of electronic games for the blind. The 
breadboard unit met great success, so we 
will soon be producing a limited number 
of games units for use at agencies and 
centers for the blind. 

The unit's electronics consist of an 
8800 processor board, a speech board, and 
an analog board. Of the eight games, 
seven are played on the keyboard. Three 
games are modifications of well known 
pastimes (Blackjack, Craps, Tic-Tac-Toe), 
while four were specially invented ("Skeet- 
Shoot", "Number Run", "Tug-0-War", and 
the "Chain Game"). The eighth game, 
called "Paddleball" is a simulated video 
game involving hitting of a moving "ball" 
heard via stereo earphones. The ball is 
indicated spatially by a tone going up 
and down in pitch and back and forth in 
stereo separation. Scoring in "hits" is 
done with the microcomputer until one of 
two players wins. 

CRIB-0-GRAM 

Crib-0-Gram is the only project we 
have undertaken outside the field of aids 
for the blind. The Crib-0-Gram is a 
screening device for potential hearing 
loss in newborn babies. It is designed 
to automatically test infants while in 
the crib, and to flag those with a possible 
hearing problem. Babies that fail the 
test are then thoroughly rescreened at 
six months of age. 

The system is controlled by an 8080 
microcomputer. A sensitive motion trans- 
ducer is placed under the mattress, and a 
small loudspeaker mounted nearby. The 
computer monitors the state of the baby's 
activity, and when conditions are appro- 
priate, turns on a 92db 2-4 kHz white 
noise stimulus. The computer then deter- 
mines through various algorithms whether 
the baby reacted to the sound. In order 
to insure statistical validity, a number 
of tests are given over a 24-hour period, 



some of which are silent control tests. The 
computer keeps score and, at the completion of 
the test sequence, gives a pass or fail indica- 
tion. 

The Crib-0-Gram System is presently under- 
going evaluation at the Stanford Hospital. The 
hardware is designed, and various software 
improvements are continually being added. 
Workers in the field agree that early detection 
of hearing loss is vital. The Crib-0-Gram, by 
using microcomputer technology, will make 
available an automatic, low cost hearing screening 
technique so that remedial steps can be initiated 
at an early age. 



LSI SPEECH SYNTHESIS 

The human vocal tract can be electrically 
simulated by means of series and parallel 
resonators driven by periodic and noise excita- 
tions. Their parameters (center frequency, 
band width, and gain) are varied as a function 
of time to create the various speech sounds. 
This technique is called "Formant Synthesis". 
In contrast to the techniques described in 
section I, an unlimited vocabulary of utter- 
ances can be generated. Nearly all experi- 
mental and commercial formant synthesizers have 
utilized analog circuitrv. This circuitry is 
prone to tolerance and drift problems and is 
relatively costly and inflexible. 

To circumvent the inherent problems of an 
analog synthesizer, we have simulated and 
breadboarded an all-digital formant synthesizer 
suitable for ultimate fabrication in LSI form. 
This unit is programmable, so can implement a 
variety of high performance synthesizer struc- 
tures. If production volumes can be high 
enough, this synthesizer promises to be suffi- 
ciently inexpensive to find wide application in 
aids for the blind. 

CONCLUSION 

Through the use of silicon technology, 
Telesensory Systems, Inc. has developed a 
number of devices for the handicapped. Appli- 
cations range from serious, such as vocational 
aid and hearing screening, to recreational 
games. Such devices can help erase the some- 
what artificial distinction between the handi- 
capped and the "normal". Our ideas for further 
applications always exceed the available 
resources and time. 



ACKNOWLEDGEMENTS 

The SPEECH+ voice technology is licensed 
from Professor Forrest Mozer of UC Berkeley. 



WEST COAST COMPUTER FAIRE 



71 



BOX 1579, PALO ALTO CA 94302 



The TSPS project was sponsored by the 
Sensory Aids Foundation, Palo Alto, Califor- 
nia. The cooperation and help of Pacific 
Telephone was vital . 

The Crib-O-Gram was conceived by Dr. F. 
Blair Simmons and is licensed from Stanford 
University. 

The LSI Speech Synthesis work was 
partially funded by The Seeing Eye, Morris- 
town, NJ. 



WEST COAST COMPUTER FAIRE 



72 



BOX 1579, PALO ALTO CA 94302 



AMBITIOUS GAMES FOR SMALL COMPUTERS 

Larry Tesler, Xerox Palo Alto Research Center 
3333 Coyote Hill Rd, Palo Alto, Ca 94304 



Abstract 

Some of the more challenging games that can be played 
on a computer require more memory than is available on 
today's personal systems. The paper presents various 
simple encoding technique* that were used by the author 
and a friend to implement an interesting subset of a 
complex game on an 8 kilobyte microcomputer. 



Beyond PONG 

Given the choice of a PONG machine and a pool table, I 
will always choose the latter. Hand-eye coordination is 
somehow more challenging when the whole body is 
involved. Moreover, the feel of the cue and the sounds 
of balls colliding and dropping into pockets appeal to my 
senses more than little plastic levers and electronic beeps. 

On the other hand, when I am home and seeking a bit of 
solitary escape, I no longer turn to Solitaire, crossword 
puzzles, TV, or even (unfortunately) reading. I switch on 
the computer and play a game like Roger Chaffee's 
version of Adventure. 

YOU'RE IN THE ASHRAM. THE SMELL OF 
INCENSE IS HEAVY HERE, AND ALL 
DIRECTIONS SEEM THE SAME. 

WHICH WAY? S 

YOU'RE IN THE LAND OF XANADU. BELOW 
YOU ALF THE SACRED RIVER RUNS 
THROUGH MEASURELESS CAVERNS DOWN 
TO A SUNLESS SEA. 

WHICH WAY? D 

YOU CAN'T GO IN THAT DIRECTION. 

WHICH WAY? W 

IN A DARK TUNNEL, YOU STUMBLE OVER A 
HARD OBJECT. IT FEELS LIKE A METALLIC 
CHEST, AND THERE SEEMS TO BE A LATCH. 
THE LATCH IS RUSTY, BUT THERE IS NO 
LOCK IN EVIDENCE. 

DO YOU WANT TO OPEN THE CHEST? 

An hour or two later, after a hundred or more moves, I 
have explored all the twenty-five rooms of the labyrinth, 
found the treasure, lost it, found it again, and escaped 
safely to the surface with my skin intact. 



Hungry for greater challenge, I wish my $800 
Commodore PKT were an $800,000 megaputer, so I could 
play Will Crowther's original Adventure, MIT's Dungeons, 
and other complex games based on the Dungeons and 
Dragons theme. With those versions, I could create 
labyrinths for others to explore, with a hundred rooms, 
multiple treasures, assorted demons, magical objects, and 
elements yet to be conceived. The adventurer could give 
commands in stylistic English phrases ("take jewels", 
"throw rock") instead of by answering multiple-choice 
questions. 

So I study ROGER'S little BASIC program, marvelling at 
how he fit even thirty flowery descriptions of rooms and 
predicaments into the tiny computer, along with their 
interconnection toplogy, not to mention a selection of 
tasty algorithms for deception, subterfuge, and final 
reward. 

The choice: buy more memory? a floppy disk? or... learn 
sardine canning... 

A clear case of Aladdin economics. Stuff the genie into 
a bottle. 



more bits per byte 

More bits per byte! No, that won't work. 



SQUEEZINGOUTSPACE 

The ALTAIR BASIC manual has bunches of techniques 
for reducing program space. These work in other 
BASICs, too, including the PET's. Eliminate REMarks 
(ugh), eliminate blank spaces (retch), use the same 
variable for several purposes (horrors). 

Such travesties against good programming technique can 
only be justified in life-and-death situations. But what 
could be a greater emergency? The goblins must be 
overcome! 

Roger has already squeezed the program quite a lot. I can 
obtain another couple of hundred bytes by making the 
program completely illegible. (Please look the other way, 
this is not for children to see.) 



WEST COAST COMPUTER FAIRE 



73 



BOX 1579. PALO ALTO CA 94302 



Encoding the Graph 

Hmmm. The topology of the labyrinth is specified in 
DATA statements. Roger has already saved a lot of space 
by encoding some predicaments ("you can't go in that 
direction", "the giant is here, you'll have to get out") as if 
they were rooms. They are marked specially to indicate 
that after the description is printed the adventurer should 
be forced into a real room, either the one from whence 
he came or some other chosen partly at random or partly 
based on possession of the treasure. 

Each room (and predicament) lists its own number and 
six connection numbers, one for each of North, East, Up, 
Down, West, and South. The connection number is 
either to mean no exit in that direction, or the 
identification of another room. A typical example: 



9020 DATA 2,4,0,23,29,0,0 

There are more than sixty distinct characters available on 
the machine (actually, 128), so why not assign a character 
to each room? Then the connectivity specification is 
simply: 

9020 DATA BD#X]## 

The D signifies a connection to room D, the ft means no 
exit. In general, A-Z represent 26 of the rooms, and then 
on beyond Zebra for the rest. 

This seems to cut 15 characters of DATA to 7. But 
actually, it is better than that, because these DATA 
statements have to be READ. When a number is read 
into an integer array, it is converted to binary and stored 
as a sixteen bit quantity in two bytes. So the array 
storage for six numbers takes 12 bytes of storage for each 
room, in addition to the 15 in the DATA statement (for 
a total of 27). But when a string is read into an array in 
this BASIC, it takes only 3 additional bytes of storage 
(for a total of 10), because the characters of the string 
are not copied: two of the three bytes are an address into 
the DATA statement itself and the third byte is the string 
length, 

It takes about the same size program to deal with either 
representation, so we have made a net gain of 17 bytes 
per room, or 510 bytes for 30 rooms. Enough for some 
dwarves, elves, and magic rings no doubt. 



YIOU9S? 

The connectivity specification is not the bulk of the data 
base describing the labyrinth. Most of it consists of 
those flowery text descriptions: 

9020 DATA 2 , 4 , , 23 . 29 , , , "YOU ' RE IN A 
NARROW EAST WEST TUNNEL, WITH AN OPENING 
ON THE NORTH SIDE TO A WIDE PASSAGE. 
WATCH OUT FOR GOBLINS!" 

Though flowery, the vocabulary is rather repetitive. The 
word 'gnome' is used in two different rooms, 'there' is 
mentioned in 7 places, 'to' in 9, 'in' in 13, and the word 
'the' occurs no less than 33 times. Altogether, there are 
181 different words, punctuation marks, and word- 
endings (no, I didn't count them, the computer did). The 
sixty "words" used more than once account for 60% of 
the text. Let's assign the following one-character 
abbreviations to the most common English words and 
endings employed in modern dungeons: 

WEST COAST COMPUTER FAIRE 



M=a, « = Detter, L=can, indirection, t = -ed, h=tor, 
G=go, H=here, 1=1, J=giaiu, K=cavern, L=little, 
M=message, N=not, O=of, P=pit, R = rock, S=-s, T=the, 
V=room, W=wide, X = Bilbo, Y=you, a=above, b=but, 
c=climb, d = -d, e=-es, g=get, h=tight, i=in, 
j=guillotine, l=ledge, n=on, o=opening, r=are, s=is, 
t=to, v=chamber, w=was, x=gnome, y=you're, &=and, 
\=through, ?=there, *-=bacK 

We can also make some of the PET graphic characters 
stand for words: ± for 'north'; a high-up line for 'top' 
and a low-down line for 'down'; something that looks 
thick and vertical for 'wall'; and so forth. Over 120 
words can be represented this way in PET BASIC. 
Although some BASlCs only provide 60 to 100 distinct 
characters, one can always encode about 250 words with 
an 8-bit code processed in machine language. Anyway, 
sixty words does seem to be a sufficient vocabulary of 
repeated words. The above room description boils down 
to this: 

9020DATA"BD#X]##yiA6NARROWI I6TUNNEL.4W 

ITH2ANonT±4SIDEtAW7PASSAGE . 5WATCH30UTF7 
GOBLINS! 

Don't tell me -- that's the kind of stuff your teletype 
always comes out with! Good; you already know how to 
read it. After DATA" are the seven characters that we 
discussed earlier for the connectivity description; might 
as well combine them with the string used for the text to 
save a little more space. Next comes the text: y=you're, 
i=in, A=a, and then 6NARROW -- which indicates a six 
character word not in the vocabulary -- then \— =east, and 
so forth. 

Various conventions too detailed for this paper are used 
in both the vocabulary and the descriptions to control the 
insertion of spaces between words and the formatting of 
lines of print. The printing subroutine runs a lot slower 
than it used to, but it is still faster than a person can 
read. 

Compressing the room descriptions saves a lot of space; 
but the printing subroutine gets longer and the 
vocabulary has to be stored. The net gain is about 400 
bytes. Compressing other messages printed by the 
program should save another hundred bytes. 



The Bottom Line 

A combination of the above techniques frees over 1000 
bytes of storage. A new room whose description shares a 
lot of the existing vocabulary can be added at a cost of 
only 40 or 50 bytes, so we could add another 20 or more 
rooms. 

I would rather add new twists that are available in bigger 
implementations, such as objects that are found in rooms 
and that can be taken along with the adventurer. No 
more than two objects could be carried at a time. Some 
objects would be valueless, others would be valuable to 
take out of the labyrinth at the end of the game. Still 
other objects would be useful during exploration, each to 
surmount a specific obstacle that can be encountered. To 
determine the properties of the objects, the adventurer 
would have to experiment and take risks. 



Educational Applications 

Although Adventure is cast as a one-player game, it 
should be possible to have several people collaborate. 

74 BOX 1 579, PALO ALTO CA 94302 



One way to collaborate is to sit at the terminal together 
planning moves and developing a model of the labyrinth 
Another way is to explore at different times, all agreeing 
to end up in a particular room after the next session. 
I hose who make it back there may then compare notes 
and try to benefit from the experiences of others. 

With more memory, a multi-discipline educational game 
with a similar structure could be concocted by running 
several simulations in parallel. For example, the 
adventurer is an international trader. His or her business 
partner (a simulated being) is off on a voyage but never 
remembers to write home. The partner must be found 
within a year or the business will be taken over by a 
sinister cartel, or the IRS, or something like that 



The adventurer travels through foreign lands seeking 
clues. He must buy and sell commodities in order to 
finance the trip. The supply and demand of commodities 
is affected by location, time of year, and random factors 
such as weather and luck. As time runs out, the 
opposition erects barriers to progress, and so forth. 

Such a game would be an earth-bound blend of 
Adventure and the game Star Trader (see the book What 
to do After You Hit Return). It would teach some things 
about geography and economics, as well as problem- 
solving, strategy, and planning. 

But all this must wait for cheaper data storage. In the 
meantime, if you'll excuse me, a minotaur is waiting for 
me in the family room. 



WEST COAST COMPUTER FAIRE 



75 



BOX 1579. PALO ALTO CA 94302 



EFIC CO^FliTIft GAMES: SCME SFECUIAT TONS 

Eennis H. Allison, Consultant, Menlo Park, CA 94025 
lee Hoevel, Stanford University, Stanford, Ca £4305 



INTROIUCTION 

Few tremes are more common in litera- 
ture than that of the epic adventure. 
In these tales the hero, through the 
exercise of his wit and brawn, over- 
comes all to achieve his objective te 
it treasure, romance, power, or what- 
ever. Even the pulp novel, now an al- 
most extinct beast, owes much of its 
structure and character to the tradi- 
tional epic. 



PDP-11?; Adventure is somewhat smaller. 
Neither is really rricro computer or 
personal computer fare at this point. 



The t 

imi ta 

compu 

more 

the u 

the 

^ames 

1/ el 

tatio 

subst 

earli 

Inarch 

Coirjfu 

Sibil 

of fa 



radition 
tors pr 
ter game 

interes 
sual "gu 
spaceshi 

already 
labcrate 
r diffi 
ance . 
er pap 
/April 
ters we 
ities a 
ntasy ga 



al epic 
cvide r 
s. Such 
ting ar. 
ess the 
p" fare 

exist, 
d & ames 
culties 
In this 
er put 

issue 
explore 
nd probl 
mes . 



and it 
ich para 

games 
d ccm.pel 
number " 
. Seme p 
but the 
present 
of con 
paper, 
lisred 

cf 
some of 
ems of t 



s modern 
digms for 

are far 
ling than 

or "zap 
rot o- epic 
most ful- 
irrplemen- 
siderable 
and in an 

In the 

People's 
the pos- 
his class 



The si 
not li 
er eve 
Chines 
overhe 
cussin 
green 
zard s . 
one of 
pschol 
the ga 
so en 
termin 
pi ay in 



rer-like cha 
mi ted to com 
ning I was 
e restaura 
ar a table o 
g just how 
snake, ore c 
And then t. 
my collegue 
cgy graduate 
me one even! 
gaged that h 
al, and spen 
g Adventure. 



rm of Adventure is 
puter folk. The oth- 
dining in a local 
nt and chanced to 
f college women dis- 
one got around the 
f the Adverture haz- 
here is the story cf 
s who introduced his 
student neighbor to 
r.gj the neighbor was 
e went cut , bought a 
t the next two weeKS 



GAMES AS FECBEATICN 

The futurists and pundits of the per- 
-5 on a 1 crtirput tiTtr - wor td- all have a-*— 
rounced that the primary use of com- 
puters in the not tco distant future 
will be recreational. On the other 
haiid, I find nearly all computer and 
video games boring. I can't get my- 
self interested for long periods of 
time . 



The first gam 
long enough t 
Adverture. I 
Crouther (now 
fied ty Ion V 
is written in 
to many mach 
game based 
ideas, but wi 
ments, has b 
son f Pare Ela 
Eave Lebling 
Dungeons and 
of tISF out 
called ME I ( 
are rather . 
about 1P0.000 



e which 
c be be 
t was 

at Xer 
oods at 

FOFTBA 
ines . 

upon 
th sig 
een wri 
ek, Br 
at M 
is writ 
of CO 
fuddle) 
large: 

words 



got my att 
come ertranc 

written b 
ex PAKC) and 

Stanford AI 
N and has mi 

A much ex 
the same g 
nificant im 
tten by Tim 
uce Daniels 
IT; it is 
ten in a d 
NNIVER and P 
Foth pr 

Eungeons re 

(36 bits) 



ention 
ed was 

y w. 

modi- 
It 
grated 
tended 
eneral 
prove- 
Ander- 
, and 
cal led 
ialect 
LANNSH 
ograms 
qui res 

on a 



Why is Adventure fun to play. Fecause 
it' is an adventure! The essence cf 
the game is exploration of an unknown 
and clever fantasy world with hazzards 
and treasure. Foth Pdvertnre a r.d 
Dungeon use a cave as a universe; a 
cave in which treasure and adverture 
can be found. Beth games owe much to 
Dungeons and Dragons. 

GAME DESIGN 

What makes a game fun? interesting? 
compelling? The answers are most cer- 
tainly hurried in the psyche and the 

.__£^14i-tr-a4i ti en of the .player* .However 

there are certain elements which might 
be considered characteristic. First, 
passive games are net really interest- 
ing. The player must be actively in- 
volved. Second, there must be soue 
fantasy fulfillment; the fo ame must 
fulfill some basic psychological need, 
however obliquely. Third, there must 
be some kind of contest and resolution 
of the associated conflict. Fourth, 
there must be some reasonable mix cf 
discovery and invention. Games and 
puzzles with one solution are of in- 
terest only once. Chess, with its 
complexity, is a game of continual 
discovery and invention. This leads 
to a fifth criterion, complexity. The 
game must be adequately complex thet 
it cannot be known, yet not so complex 
as to appear to be random. There must 
be some higher rules at work, but rot 
all motivations and manifestations cf 
the rules should be clear. Lastly, 
there must be variety? bcredom feeds 
on repitition. That is not to say that 



WEST COAST COMPUTER FAIRE 



76 



BOX 1579, PALO ALTO CA 94302 



one should exclude ritual (in the 
sense of folk conventions). These are 
f biidamental fabric of knowledge by 

and the t ame 



the 

which 

player 



the game rraker 
corrrrunicates . 



A game 
tions 
ture . 
will 



which 
draws 
while no 
be textbook 



follows the 
upon a lorg 



f ji c t r a d 1 — 

proven struc- 
real computer game 
perfect, one can ex- 



pect that some elements cf the tradi- 
tional forrr will be preserved. The 
central figure, the hero the player is 
identified with, is of national, 
international, or galactic importance. 
The setting of the game matches the 
importance of the hero. The hero must 
perform some difficult deeds in his 
quest. Gods, daemons, or other super- 
natural beings rray take an active 
part. The game starts in media res 
with the player di scovering~what is 
happening as the game progresses. 

Everyone car make a catalog of fantasy- 
universes which are potential environ- 
ments for such games. Ore can extract 
the universe of dangerous characters 
and the Oriental Express from the 
classic spy thriller, the starships 
and strange beings of the star explor- 
er, the world and honor code of the 
knights of the round table, and on and 
on. 

SCRIFIING A GAME 

Scripting rather than programming is 
important* The creation of an epic is 
an ercrrrcusly complex task. And there 
is nc information about to indicate 
that programmers are particularly 
skilled at doing it. The creation of 
a ne\» game should be supported with 
special purpose tools so that it is 
available to non-prcgrarrmers . 

The game author must make a number of 
choices. He must decide upon the game 
universe, establish all its natural 
laws, and create all the uersona 
(players, human or otherwise) who po- 
pulate the universe. He must also 
create these inanimate objects of spe- 
cial significance to the game and dis- 
tribute them throughout the universe. 
It is rather like playing god. 

The real problem here is the r.on- 
detenrinistic nature of the game. All 
persona might not appear in any given 
game? the ending is dependent upon how 
the player responds. It is a bit like 
a TV script for which all middles and 
endin t s are worked out. 



Persona are the most difficult prob- 
lem. Good games need interesting in- 
teresting characters to populate their 
world, both good and evil. ^nt on lv 
this, persona must be able to communi- 
cate with the player in reasonable na- 
tural languge, and the response rust 
be tempered by the character of the 
persona. While many characters are 
rather shallow, others must have some 
psychological depth. 

A most important persona is the alter 
ego cf the player himself. It per- 
forms his commands and observes the 
game universe as his eyes, ears, and 
nose. The alter ego may also have the 
role of conscience, arguing with the 
player when he tries to dc ^something 
out of character. 

CONFLICTS ANT RESOIUTION 

Svordplay at a terminal is rot really 
practial. Yet ever the ncn-violeit 
games need to have some way of resolv- 
ing contests. One way is to replace 
the actual contest by an idealized 
one. When the black kright encounters 
the white knight, he need rot actually 
joust; a quick game of tic-tac-toe 
might be equally as fulfilling. Other 
possibilities come to mind: a simple 
trivia quiz, an factual quiz, a rid- 
dle, or a simple number game. 

TCWAPPS AN ELECTRIC NOVEL 

Perhaps the most exciting possibility 
is what one might call the Electric 
Novel. It is like today's escapist 
literature, except it is a participa- 
tory experience. You, the player, are 
the ^hero. You don't experience the 
hero's decisions vicariously,* you matte 
them. We have not really yet solved 
the problems of sex and violence in 
such literature, but it does make in- 
teresting speculation. 

With the advent of inexpensive voice 
recognition and synthesis units, good 
color graphics, and very very lar t e 
mass storage- devices, the possibili- 
ties are even better. 



WEST COAST COMPUTER FAIRE 



77 



BOX 1579. PALO ALTO CA 94302 



Special "Laboratory" Session on Computer Games: 

CREATE YOUR OWN (COMPUTER) GAME 
An Experience in Synectic Synergistic Serendipity 



Ted M. Kahn 

Department of Psychology, University of California, Berkeley 

and 
XEROX Palo Alto Research Center 



This session will be held back-to-back with the session on 
Extraordinary Computer Games. Its purpose is to allow 
small groups of participants to generate and elaborate new 
ideas for various types of computer games in an 
"experience it" environment, without worrying about 
problems and details of specific computer implementations. 
The session will be semi-structured through the use of 
meta-game*, a game which I have devised for generating 
new game ideas through cross-fertilization between 
different fields. In addition, various types of typical game 
pieces and boards will provide stimulus material for game 
structures. The entire creation process will proceed as an 
exercise in group problem-solving, one which will allow 
people to meet and cooperate with each other in an 
enjoyable atmosphere while working on a common task. 

The session will emphasize three important aspects in the 
creation of original games, computer-based or otherwise. 
The process is; — 



- svnectic - Many interesting ideas come as a result of 
making connections between fields which may seem to be 
unrelated (e.g., "Think of a game which involves principles 
of physics and fantasy."); 

- synergistic - "A game is more than just the sum of its 
component parts"; 

- serendipitous - One often discovers unexpected 
results or treasures while originally looking for something 
entirely different. This is probably the most exciting and 
unpredictable part of creative activity. 



This session will be of special interest to teachers and 
parents who are interested in helping children of all ages to 
develop their own ideas, and to game programmers and 
non-programmers alike. 



* meta-game c Copyright 1977 by Ted M. Kahn and 
Moshe D. Caspi 



WEST COAST COMPUTER FAIRE 



78 



BOX 1579, PALO ALTO CA 94302 



PSYCHOLOGICAL TESTS WITH VIDEO GAMES 
lersh and Al Ahumada, Aero/Astro Dept., Stanford U., Stanford, CA <)h305 



Abstract 



Because of the similarity between video 
game logic and psychological testing logic, a 
microcomputer designed to facilitate game pro- 
gramming can also be used to present stimuli 
acquire responses, and perform the preliminary 
data reduction required for the testing of per- 
ceptual and cognitive abilities. The capabili- 
ties of a game system—the RCA 1802 COSMAC Video 
Interface Processor — will be discussed and dem- 
onstrated with three tests. The game-playing 
microcomputer is an effective tester when the 
display format requires flexible graphics and 
little alphanumeric information. Low cost 
portability, and ease of programming are its 
principal advantages. Demonstration tests in- 
clude an auditory discrimination test, a Stern- 
berg memory test, and a water jar problem-solv- 
ing test. 

The Testing System 

A minimal system for presenting psycho- 
logical test items must have graphics and audi- 
tory display capability, two or more response 
keys, the ability to measure keypress latencies 
to the nearest hundredth of a second, and it 
must be programmable. From among the many 
microprocessors shown at the first Computer 
Faire, we chose the RCA COSMAC VIP because it 
satisfied these requirements, was cheap at $275 
and was locally available off the shelf. We 
were also attracted to the COSMAC because an in- 
terpretive language was was provided for game 
programming, RAM was expandable to h K bytes on 
board, the I/O port provided a convenient audio 
channel, and its low power consumption and small 
size made it appropriately portable. 

CHIP-8, the interpreter, turned out to be 
surprisingly good for programming tests, because 
it was optimized for games. It takes up a lit- 
tle over 512 bytes of RAM and provides a timer 
and a random number generator as well as display 
control and keypad response collection. The two 
byte instructions look like machine code, but 
are easy to learn and use . For example, 8XY4 
sets variable X to the sum of varibles X and Y . 
The instruction DXYN displays the N byte pattern 
at coordinates specified by variables X and Y. 



WEST COAST COMPUTER FAIRE 



79 



CHIP-8 and machine language subroutine calls are 
provided for . 

We have had to write three machine lan- 
guage procedures to have psychological testing 
capability: MOVE, which permits the computation 
of one display while actually displaying an- 
other; DUMP, which outputs a waveform in RAM to 
the D/A converter at a sampling rate of 10 KHz; 
and REACT, which measures reaction time with 
2 msec precision during visual display. 

Psycho-Logic 

Psychological tests record a sample of 
behavior in response to a standard test item. 
These items might take the form of questions, 
perceptual displays, or objects to be manipu- 
lated. The behavior is usually reduced to a 
number indicating a response category and/or 
the time elapsed between item presentation and 
response. At the end of the test, summary 
scores are computed. Video games like PONG have 
the same logical structure. The test item is a 
moving dot on the playing field, the response is 
the turn of the paddle knob, and the score is 
one against you if you fail to deflect the dot. 

Demonstrations 

Psychoacoustic discrimination . Two audi- 
tory waveforms are stored in RAM and are pre- 
sented in random order. The subject's task is 
to indicate which is the target sound (or the 
louder or higher in pitch, etc.). Performance 
is scored by the number of correct responses. 

Memor v scanning . A set of from one to 
six digits is displayed for a few seconds. The 
subject decides whether or not a subsequent 
probe digit is a member of the set and responds 
as rapidly as possible. In this situation, the 
reaction time is a linear function of the number 
of items in the remembered set. The slope of 
this function is a measure of the access time of 
short-term memory. 

Water Jar problem . The capacity and cur- 
rent contents of one full jar and two empty jars 
are displayed. The subject's task is to pour 
half the contents of the first jar into the sec- 
ond. The total number of pours measures prob- 
lem solving ability. 

BOX 1579, PALO ALTO CA 94302 



Acknowledgment 

The water jar program was written by Dr. 
Richard Marken, Augsburg College, Minneapolis, 

MN 5540A. 



WEST COAST COMPUTER FAIRE 



80 



BOX 1579. PALO ALTO CA 94302 



COMPUTER ART AND ART RELATED APPLICATIONS IN COMPUTER GRAPHICS: 
A HISTORICAL PERSPECTIVE AND PROJECTED POSSIBILITIES 

Beverly J. Jones, Ph. D. 
Assistant Professor, School of Architecture and Allied Arts 
University of Oregon 



This slide lecture presents a historical review of computer 
art and art related applications in computer graphics from 
191*5 to the present. Most of the images shown were generated 
by large- computer systems and involved extensive programming. 
Those aspects which seem most promising for development by 
individuals or community centers with small computers are in- 
dicated. The research, educational, recreational and economic 
possibilities inherent in using computer systems for art- 
related tasks are briefly discussed relative to the images 
shown. Because the conference presentation depends so heavily 
on slides, the paper presented here represents only a summary 
of ideas. It also includes a resource list of bibliographic 
material. 



Introduction 

Electronic technology, particularly the inform- 
ation processing devices known as computers 
have the potential of affecting many areas 
of our lives. One of these areas is the arts. 
Because the computer can generate and man- 
ipulate visual images, I believe it offers 
promise for use by artists, art educators, 
art historians, aestheticians, and museolo- 
gists. 

The pursuit of this line of thought led to a 
collection of slides depicting the images and 
objects which have been generated with the aid 
of computers from 19^5 to the present. A re- 
view, analysis, and projections based on this 
collection comprise the main body of this pre- 
sentation. 

Computer science is a unique discipline in 
that it has the potential for application in 
many fields in which the computer scientist 
is not necessarily knowlegable. Conversely 
the individual knowlegable in a particular 
subject matter area is not necessarily aware 
of potential computer applications. 1^ 
believe these two statements are especially 
true in relation to the arts as a subject 
matter area. Part of the reason for this 
may be the anti-technological stance which 
has beei> fashionable in the arts in recent 
years. As individuals in the arts become aware 
that human values and considered choices 
based on these values can direct computers, 
that computers may be used to individualize 
images, objects and events; and that com- 
puters need not be used in the mode of mechan- 

WEST COAST COMPUTER FA1RE 



ical technology, perhaps a greater willing- 
ness to utilize the potential of computers for 
art applications may develop. (20, 21) 

Computer Graphics: A Historical Review 

In the 19U0's analogue computers were used 
to generate the earliest computer graphics 
which were displayed on cathode ray oscil- 
loscopes. Ben F. Lapofsky and Herbert W. 
Franke were among the pioneers in creating 
these images. (h) An early version of a 
plotting device was the Henry Drawing Compu- 
ter, a modified analogue computer designed 
by D.P. Henry. It produced drawings by 
combinations of pen movements and table move- 
ments. (15) 

Later digital computers were used to generate 
computer graphics using line printers, plot- 
ters and cathode ray tubes as the most common 
output devices. Systems combining analogue 
and digital components were also used to 
produce graphics. Most of these images were 
produced by engineers and technicians for 
practical purposes. For example, William 
Fettner's program created the image of a man 
with 7 movable components using data repre- 
senting the 50th percentile pilot of the U. 
S. Airforce.(U) However, some digital 
images were produced for purely aesthetic 
purposes, such as "Stained Glass Windows", 
a graphic designed by the Army Ballistics 
Research Lab. (15) 

Some of the most effective of the graphics, 



81 



BOX 1579, PALO ALTO CA 94302 



with purely aesthetic intent, were created 
by the Computer Technique Group of Japan. 
In any report of computer graphics the work 
of this group is certain to be included. 
Their transformations of photographs of 
President Kennedy and their interpolations 
such as "Running Cola Becomes Africa" may 
be considered classic examples of computer 
art from this period. All of the indi- 
viduals comprising this group were engineers 
and programmers. It contained no profession- 
al artists. At that time very few people 
with extensive art training were working to 
create computer generated images. One of 
these was Charles Csuri and another was 
Robert Mallary. Well known examples of 
their work include Csuri' s film "Hummingbirds", 
his drawing "Sine Curve Man", as well as 
Mallery's machine tooled sculptures created 
with the program TRAN2.(2+, 9, 11, 15) 

Some of the techniques used to create 
computer art introduced a characteristic 
look to this medium. For example, geometric 
graphics generated using equations to de- 
scribe the form have been used extensively. 
Some of these closely emulate the Op Art which 
was popular during the 1960's. Many of 
these graphics make good use of the com- 
puter's ability to do exact and repetitious 
tasks more easily than humans. Another 
technique resulting in a different type of 
form, was the use of stochasticism or random- 
ization in a portion of the program. Similarly 
some environmental variable such as movement 
or sound was recorded electronically and 
included in the image determining data 
within a program. These two techniques 
illustrate the computer capability to generate 
many forms using one program which includes 

variables . ..which., may be. altered at random - 

or with a preconceived pattern in mind. (2, 
K 1^ 15) 



Another type of form was introduced with 
the technology which permitted digitizing of 
the scanned image of a photograph or object 
in terms of a value scale. This technique 
alone and combined with interpolation led to 
the production of a variety of images char- 
acteristic of computer art.(l+, 8) The 
use of interpolation between drawn images was 
also common. Usually these drawn images were 
introduced to the computer using a light 
pen as the input device. (k t 15) 

In 1968 the first major international 
exhibition of computer art was held in 
London. It was called Cybernetic Serendipity. 
Following this exhibit, more artists began 
to take an interest in the computer as a 
creative medium. (15) Currently computer art 
has taken on an international flavor with 
work going on simultaneously in many countries 
of the world. Artists such as Barbadillo, 



Sykora, Giorgioni, Bonacic, Leavitt, Bangert 
and others are now using the computer as a de- 
signing or executing device in their work.(l, 2, 
9, 16) However, some recent technical develop- 
ments have not been widely incorporated in the 
work of artists and remain evident mainly in the 
province of graphics created by technicians 
for experimental and practical purposes. Ex- 
amples of these are three dimensional shaded 
color graphics and computer generated holo- 
grams. (3, 13) 

Art Applications and Projections 

The attitudes and working approaches of con- 
temporary artists using the computer to assist 
them in designing and/or executing their work 
vary considerably. An examination of recent 
issues of Leonardo or of Ruth Leavitt 's recent 
book, Artist and Computer , will reveal the 
variety of conceptual modes and technical 
methodologies which computer artists are using 
in their work. 

Their projected applications are even more 
revealing. For example, Tony Longson pro- 
poses to use the computer to help him create 
forms to better understand visual perception 
and the creative process. Edward Ihnatowicz 
wishes to create responsive Kinetic sculptures 
in an exploration of the field of artificial 
intelligence. He proposes to use these to 
understand cognition through studying the behav- 
ior of these artificial systems which would be 
capable of simulating natural behavior. Charles 
Csuri suggests that artists could manipulate 
visual displays of statistical data to express 
artistic view of reality relating to social 
problems. In a more conventional vein Patsy 
Scala talks of creating visual poetry with 
-computer generated- videtr images and Herbert 
W. Frank expresses interest in creating graphic 
music. Still other artists continue in an 
even more conventional mode. They retain the 
traditional mode of creating art works while 
using the computer to assist them in design. (9) 

Some aestheticians are using the computer to 
generate images for use in testing the 
aesthetic response. Some are using computers 
to analyze statistical data gathered from 
subject's responses to conventional art works. 
Computer simulations of the style of non- 
computer art such as that of Mondrian, Klee, 
and Hartung suggest experiments to determine 
what factors are most relevant in determining 
certain types of responses to works of art.(^, 
5) 

Museologists and art historians began to tap the 
potential of the computer for information re- 
trieval and analysis to aid them in studying 
classifying and caring for museum collections. 
The programs created by the Museum Information 
Network have been \jsed by museums for these 



WEST COAST COMPUTER FAIRE 



82 



BOX 1579, PALO ALTO CA 94302 



purposes . ( 7 , 19 ) 

A few art educators are interested in using 
computers for instructional and research 
purposes. Guy Hubbard has attempted to 
use computers in programmed instruction. 
Thomas Linehan has used computers to help 
students understand their own preference 
styles. I have suggested research appli- 
cations for three computer capabilities : 
graphics, statistics and information re- / 
trieval.(6, 10) / 



While a few individuals within the inter- 
national art community are "beginning to/ sense 
the potential the computer has for trans- 
forming the conventional views about art, I 
do not believe anyone has projected spme of 
the possible effects this could have/ on 
society. For example, what new choices 
are available to people for use in education, 
recreation or economic use because of 
art-related computer applications. Whose 
responsibility is it to cultivate an aware- 
ness of these choices and share it with 
others? Exploring one illustration may 
illuminate the nature of these choices. 

Moles in his essay "Art, Cybernetics and 
the Supermarket" noted the potential of 
introducing a variable into the/ computer 
program which results in the magnetic tape 
which runs machine tools for ^ndustry. 
By these means every item to/ come from the 
assembly line could vary slightly, thus 
giving the customer more choice. The 
variability would probablj/ be cosmetic in 
nature, not essentially altering the 
product purpose or functional form. Thus 
the choice would be regarded as an ex- 
ample of marginal differentiation. (lU) 



artifacts would not be bound by the same 
considerations. With the dropping cost of 
/small computers and their growing versa- 
tility it appears that many homes will have 
/ several single purpose microprocessors for 
games or for the control of appliances. This 
approach to computer application is in the 
style of mass production and allows the con- 
sumer little control over tlie product ex- 
cept by veto of non-purchase. A small 
computer which allowed the customer to pro- 
gram many essential aspects of the design 
of his environment would be more in keeping 
with the idea that human choice is important 
in directing the use of computers. 

As Duane Palyka notes, "...the versatility 
of this medium is its ability to handle 
quite varying devices for input or output. 
All that is required is that each device have 
a wire or two containing electrical current 
which varies within a certain prescribed 
range. The rest is within the imagination 
of the individual designing the device. "(9) 
To date drawings, paintings, prints, weavings, 
and sculptures, have been created using 
specialized output devices. Responsive 
kinetic sculptures and responsive environments 
have also been created existing as output 
devices. That the public at large could 
manipulate canned programs and create their 
own programs to operate such devices does not 
seem to me to be an unreasonable possibility. 
In this way computers could allow them to 
regain control of the artifacts and environ- 
ments which surround them daily. This seems 
to me an exciting prospect which has impli- 
cations for education, recreation, and our 
economic system. 



However systems such'' as that used by 
Mallary for producing sculptures, Lourie 
for producing weavings, or the Synthavision 
System discussed by Elin could be used by 
individuals wishing to design and create 
artifacts such as furniture, fabrics, 
and prints which would be unique and suitable 
to their special requirements. If canned 
programs with 'many optional branches were 
used to assist individuals in utilizing this 
type of system very little computing knowledge 
would be necessary. Because machine tools 
operating from magnetic tape output could 
produce the artifacts, little knowledge of 
craft processes would be necessary. (7, 9, 
18) 

As computers are presently used in auto- 
mation they serve mechanical technology 
which demands exact repetition for mass 
production and is best served by heavy 
centralization of industry. Small systems 
for individually designed and produced 



WEST COAST COMPUTER FA1RE 



83 



BOX 1579, PALO ALTO CA 94302 



REFERENCES 



1. Bangert, Collette S. & Bangert, 

Charles J., "Experiences in 
Making Drawings by Computer and by- 
Hand" Leonardo, vol. 7, p. 289- 
296. 197U. 

2. Bonacic, Vladimeer, "Kinetic Art: 

Application of Abstract Algebra 
to Objects with Computer-Controlled 
Flashing Lights and Sound Combina- 
tions" Leonardo, vol.7, p. 193- 
200. I97lt. 

3. Csuri, Charles, "Computer Graphics and 

Art " Proceedings of the IEEE , 
vol. 62, no. k 9 p. 503-515. 197^. 

k. Franke, H.W., Computer Graphics , 

Computer Art . Phaidon, New York. 
1971. 

5. Gips, James and Stiny, George, "An 

TnvtiEL.i £ril J 01'i . f Al gr.v I tuaic 
Aesthetics" Leonardo, vol. 8, 
p. 213-220. 1975. 

6. Jones, Beverly, Computer Applications 

in Art Education Research unpub- 
lished dissertation. 1976. 

7. Kranz, Stewart, Science and Technology 

in the Arts Van No strand Reinhold 
Co. , New York. 197 1 *. 

8." KhowTtoh, K. & Harnori, L. , "Com- 

puter-produced Grey Scales" 
Computer Graphics and Image Pro- 
cessing , vol. 1, p. 1-20. 1972. 

9. Leavitt, Ruth (ed. ) Artist and Com- 
puter , Creative Computing Press, 
Morristown, New Jersey. 1976. 

10. Linehan, T. , "A Computer Graphics 

System for Visual Preference Detec- 
tion and Analysis" p. 90-121, 
unpublished document. 



Pictures with an. Ink Flotter," Computer 
Graphics and Image Processing , vol. k, 
p. 200-208. 1975. 

lU. Reichardt, Jasia (ed.), Cybernetics, Art , 
and Ideas , New York Graphics Society, 
New York. 1971. 

15. Reichardt, Jasia (ed.), Cybernetic 

Serendipity , New York-Washington. 1969. 

16. Sykora, Zdenek and Blasek, Jaroslav, 

"Computer- Aided Multi Element Geometrical 
Abstract Paintings," Leonardo , vol. 13, 
p. 1+09-1*13. 1970. 

17. Thompson, Michael, "Computer Art: A 

Visual Model for the Modular Pictures of 
Manuel Barbadillo" Leonardo , vol. 5, 
p. 219-226. 1972. 

18. Tuchman, Maurice, Art and Technology , 

Viking Press. 1971. 

19. Vance, David, "Organization Profile: 

Museum Computer Network, Inc.," Informa- 
tion , p. 157-159, May/ June 1975- 

20. Weizenbaum, Joseph, "On the Impact of the 

Computer on Society, Science , p. 609-6lU, 
May 12, 1972. 

21. Weizenbaum, Joseph, Computer Power and 

Human Reason , W. H. Freeman & Company, 
San Francisco. 1976. 



11. Mallary, R. , "Computer Sculpture" 

Art Forum , p. 29. 197 1 *. 

12. Molnar, Vera, "Toward Aesthetic 

Guidelines for Painting with the 
Aid of a Computer," Leonardo , 
vol. 8, p. 185-189. 1975- 

13. Phillips, J.W., Ransom, P.L. , 

Singleton, R.M. , "On the Construc- 
tion of Holograms and Halftone 



WEST COAST COMPUTER FAIRE 



84 



BOX 1579, PALO ALTO CA 94302 



MICROPROCESSOR CONTROLLED SYNTHESIZER 



Ceasar Castro 
295 Surrey Place 
Bonita, CA 92002 



Allen Heaberlin 
5737 Avenida Sanchez 
San Dieao, CA 92124 



Abstract 

It does not necessary follow that high 
quality music synthesizes requires complex hard- 
ware. This paper discusses the hardware and 
software design of a synthesizer which utilizes 
a standard microprocessor and a relatively 
simple synthesizer card. Basically the synthe- 
sizer hardware is used for the high speed data 
processing and the software is used for the 
slower data manipulations. The hardware allows 
the microprocessor to control the frequency and 
amplitude of up to 32 tonal channels. Ampli- 
tude control provides the means of producing 
attack and decay envelopes and frequency con- 
trol provides the means of producing frequency 
modulation of the output waveform. The syn- 
thesizer card has storage space for 16 unique 
tonal waveforms. These waveforms can be used 
to emulate different sounds. Their selection 
is controlled by the processor. The under- 
lining design philosophy of the synthesizer 
was to tax the software as much as possible and 
also to give the software as much control as 
possible. This simplifies the hardware and 
gives the greatest degree of flexibility. 

Background 

There are several different approaches 
which could be used to design a synthesizer. 
Each has its advantages and disadvantages. 
As to which is the best depends on the pre- 
defined design goals. Before discussing the 
synthesizer design several different synthe- 
sizer methods will be discussed. These alter- 
natives include both classical analog designs 
and several, new digital techniques. 

Analog . This design, usually consisting 
of oscillators, filters, an other special wave- 
form circuits, has traditionally been used in 
synthesizer and electronic organ design. 
These circuits tend to be simple. Usually 
each circuit performs only one function and no 
wide data paths are needed as in some digital 
circuits. A big disadvantage in this approach 
is that analog circuits, such as oscillators 
or filters, can not be time shared. Thus to 
implement a multitone synthesizer many similar 
circuits must be fabricated. In addition 
it is difficult to implement programmable 



analog circuits. For instance, making an ana- 
log oscillator programmable adds significant 
complexity. If the circuit is not programm- 
able flexibility and adaptability is lost. It 
would be difficult to incorporate new wave- 
forms. Furthermore precise control of fre- 
quency and waveforms is difficult. As the pre- 
cision increases the design becomes demanding. 
Oscillator and filter design becomes critical 
and components must be carefully chosen. In 
addition analog circuits have dynamic range 
limitations which are difficult to improve. 
Digital design can, at least in theory, im- 
prove the dynamic range by increasing the 
word length. To summarize analog circuits 
tend to be simple but have serious defici- 
encies when sophisticated performance is re- 
quired. 

Commo n Divider . - 1 This approach is com- 
monly used in electronic organs and uses a 
common master oscillator, usually around 2 MHz, 
and generates tonal frequencies by digital 
dividers. Usually these frequencies are then 
passed through different analog filters gene- 
rating various waveforms. There are several 
companies which produce the divider chips, a 
significant advantage of this method. Since 
only frequencies which are divisible into 
the master oscillator frequency can be pro- 
duced, resolution is restricted. Thus 
slightly different frequencies can not be 
produced. This approach is easy to imple- 
ment since divider chips are available but 
the approach is somewhat restrictive. 

Digital Harmonic Synthesis . 1 - J In this 
design each harmonic is separately gene- 
rated with the amplitude and frequency spe- 
cified by a piecewise linear function. The 
implementation has good potential in dupli- 
cating waveforms and should be able to gene- 
rate almost any desired waveform. This 
approach requires a amplitude controllable 
sinewave generator for each tonal harmonic. 
This is a significant hardware requirement 
as there easily may be 10 to 15 required 
harmonics. In addition since the amplitude 
and frequency for each harmonic must be pro- 
vided a significant amount of control must 



WEST COAST COMPUTER FAIRE 



85 



BOX 1579, PALO ALTO CA 94302 



also be provided, probably beyond the capa- 
bility of common 8 bit microprocessors 
(6800, 8080, Z-80). Thus this approach 
offers high performance but unfortunately 
high hardware and control requirements. 



FM Generation 



[3] 



In the FM generator 



approach a sinewave (or possible other func- 
tion) is used to modulate the phase of an 
oscillator. The phase is then converted to 
a sinewave, usually by table look-up. If 
the ratio between the modulating frequency 
and the carrier frequency is an integer a 
harmonic spectra is generated. By changing 
the ratio between the frequencies and the 
"modulation index" different spectrums can 
be generated. This approach is fundamen- 
tally simple as few calculations are re- 
quired and harmonic rich waveforms can easily 
be generated. One objection to this method 
is a somewhat subjective one. Since the 
spectrum is not controlled directly but 
rather through a Bessel function it is diffi- 
cult to relate the arguments to the gene- 
rated spectrums. Thus it may be difficult 
to implement a specific tonal waveform if 
the parameters, modulation index, etc., 
haven't been obtained. In addition if the 
waveform produced is not bandlimited to 
the sampling rate aliasing will occur. This 
will introduce distortion as spurious fre- 
quencies will be generated. The only practical 
way to correct this problem may be to reduce 
the spectrum generated by insuring the spec- 
trum does meet the Nyquist criteria. Another, 
even less attractive option, is to increase 
the sampling rate. Thus the approach does 
have potential but does have some pitfalls. 

._^.„. ...„ .„._ . . „„ ^ Synt .h es -■ s (phase Accumu- 
lationTT This approach has been discussed in 
other papers [4] and has been used by the au- 
thors.^ J This approach is similar to John 
Snell'sLoJ approach except the memory stores 
the tonal waveforms rather than just a sine- 
wave. In this design (see figure 1) a tonal 
frequency phase is generated recursively by 
using an accumulator. A digital word, corres- 
ponding to the phase shift between cycles is 
continuously added in the accumulator obtain- 
ing successive tonal phases. The phase is then 
converted into a waveform using a memory as a 
lookup table. The phase is the input address 
of the memory and the memory word is the wave- 
form value. At the memory output the wave- 
form can be scaled. This is done by multi- 
plying the output by a scaling value. By con- 
trolling this value, decay and envelopes can be 
implemented and also tremlo effects. The cir- 
cuitry can produce many channels by making the 
accumulator a multiword accumulator memory 
and adder. Of course control becomes more 
complicated since the circuitry is shared 
among different channels. In this case all the 



waveforms are summed at the output and this sum 
is converted to an analog voltage in a digital- 
to-analog converter. 

This approach is entirely digital with 
much of the tonal generation process easily 
controlled. The frequency is specified by the 
word in the frequency control RAM; the wave- 
form produced is the waveform in the RAM and 
the amplitude envelope specified by another 
RAM. Thus all of the above can be controlled 
from a microprocessor merely by the processor 
writing into the RAM's. 

This approach is computationally simple. 
An addition is required to generate the phase, 
a memory access to find the waveform value and 
a multiplication to implement envelope func- 
tions. In addition a summation must be per- 
formed over all tones. The approach is flex- 
ible in that all important parameters can 
easily be processor controlled. A logical 
microprocessor function is envelope gene- 
ration since envelopes tend to change slowly. 
The full resources of the microprocessor 
would then be available for this function. 



FREQUENCY 

CONTROL 

WORD 



r 


" 


— 


_ 


- 




* 








ADDER 








ALLU 


MUTATOR 
\ 


1 










REGISTER 
















L. 


— 


— 


— — 






1 


i 










WAVEFORM 


' 






MEMORY 


f 
j 



SCALE 
VALUE 




OUT 



Figure 1. Direct digital svnthesis 



WEST COAST COMPUTER FAIRE 



86 



BOX 1579. PALO ALTO CA 94302 



Synthesizer Design Goals 

The design goal was to allow sophisti- 
cated performance yet be of simple design. 
This was attempted by making the hardware 
simple and putting much of the complexity in 
the software. This affords maximum flexi- 
bility since software can be updated and 
changed easily. It also results in simpler 
hardware. The goals of sophisticated per- 
formance and simple design are somewhat exclu- 
sive and some compromises had to be made. 
The compromise was in the number of channels. 
In the approach taken the complexity is some- 
what proportional to the number of channels. 
Thus to simplify the design a small number 
of channels was implemented since this will 
allow lower speed circuitry and some data 
multiplexing can be used. Furthermore 
in taking this approach a modular design can 
be implemented. To gain increased perfor- 
mance more of the identical synthesizer 
modules can be used to increase the number of 
channels. Once the design is completed it 
is easy to duplicate the circuitry. 

An important use of the synthesizer was 
in constructing an electronic organ which 
sounds like a pipe organ. Basically elec- 
tronic organs, especially affordable ones, 
don't sound like pipe organs. Aside from 
the accoustical environment where the organ 
is usually located there are several reasons 
for this. First of all there is usually no 
chorus effect. This is the simultaneous 
sounding of several tones of the same or 
octavely related pitches, each tone 7 sounding 
at a slightly different frequency. 1 J Most 
organs use a small number of oscillators, 
often 12, corresponding to the 12 notes in 
an octave, while pipe organs have the equiv- 
alent of thousands. Furthermore; separate 
manuals often use the same oscillators fur- 
ther aggravating the problem. Another sig- 
nificant problem is that electronic organs 
are limited in timbre or waveform generation. 
Usually the waveforms are constructed by 
passing a signal, such as a sawtooth, through 
a filter representing the desired sound. Also 
the filter usually covers 5 octaves. Coupling 
these two restrictions limits the waveforms 
that can be generated. Third, the transient 
effects of pipe organs are rarely incorporated. 
The pipe organ has definite decay and attack 
characteristics. If these effects are included 
they are usually only rudimentarily implemented 

Since the proposed synthesizer was to 
eliminate as many of the above deficiencies as 
possible the design must implement the effect 
of many oscillators giving a "chorus" effect; 
it must have very flexible waveform generation; 
and it must provide for attack and decay en- 
velopes. 

Initially several constraints were im- 
posed upon the design. Fundamental to the de- 



sign were performance constraints. First, the 
synthesizer must be capable of generating at 
least 25 different tonal frequencies. This 
figure was considered a lower bound since it is 
desirable to produce many more. Since there 
are ten fingers and two feet the maximum num- 
ber of notes that one can play is 12. Having 
a minimum of 25 possible tonal frequencies 
insure that at least two tonal frequencies 
can be generated for each note. Secondly 
there should be a minimum of 4 waveforms or 
tonal sounds generated at one time. Third, 
there must be control of the envelope or ampli- 
tude variations such as trenlo. This control 
must also be programmable. Fourth, the fre- 
quency must be specified to a high degree of 
accuracy. This will allow close frequencies 
to be used for the same note giving a chorus 
effect. This frequency control must also be 
programmable. Finally the word length must be 
at least 12 bits giving a SNR (Signal -to-Noise 
Ratio) of 72 dB. In addition the number of 
samples specifying the waveform should be at 
least 1000. This allows waveforms to be 
accurately specified. 

In addition there were important hardware 
goals. First, no non-standard technology 
should be used. Emitter coupled logic was not 
to be used, nor were special purpose chips 
which are difficult to find. Basically the 
design should use standard off the shelf IC's 
such as TTL and standard MOS. Second, the 
design, especially the controller, should be 
simple. Since the design was to be done in our 
spare time difficult trouble shooting problems 
were to be avoided. In addition a simple 
design insures simple maintenance. Next, the 
design should use a reasonable amount of 
power - about 10 watts maximum. Finally, a 
medium number of IC's, less than 100, should 
be used to fabricate the synthesizer. 

A critical part of the design is the 
software. The software was to be designed 
with certain guidelines. First, to try to 
keep the synthesizer hardware to a minimum, 
software was to be used to its fullest extent. 
This would not only allow for simpler hard- 
ware design but potential performance increase. 
In the future microprocessors will have better 
instruction sets and will be faster. Since a 
large part of the processing will be done by 
the processor there is potential increased 
performance. In addition the microprocessor 
should completely control the synthesizer. 
This would allow for maximum flexibility in 
modifying and changing the synthesized 
sounds produced by the system. In essence 
all the high speed data processing will be 
done by the synthesizer card and all the data 
storage, general bookkeeping and control will 
be done by the microprocessor. 

Finally, since the purpose of the syn- 
thesizer is to generate musical sounds, some 
input device to indicate which sound or notes 



WEST COAST COMPUTER FAIRE 



87 



BOX 1579. PALO ALTO CA 94302 



to produce is necessary. The obvious selec- 
tion is a piano or organ keyboard. This 
appears to be the ideal input as the synthe- 
sizer is considered an instrument and should 
be played like one. In addition the inter- 
face must be under interrupt control. Sof * - 
ware polling is not practical since little 
software time would be devoted to other 
synthesizer software functions. 

The synthesizer design method chosen 
was the direct digital method described 
earlier. This offers much in potential per- 
formance and also is computational efficient. 
It further lends itself for integration with 
a standard 8 bit processor. 

Synthesizer Hardware Design 

The tone generate part of the synthe- 
sizer consists of five fundamental parts: 
frequency generator, waveform, weighting, 
accumulation and output, and control (see 
figure 2). The frequency generator determines 
the phase at each sample point. This phase, 
of course depends directly upon the fre- 
quency control word (FCW) provided by the pro- 
cessor. The frequency generator recursively 
generates the newest phase by adding the FCW 
to the prevoius phase. The phase is then 
passed to the waveform section. Here the 
phase is "mapped" into the waveform: from the 
phase, nj |< the waveform, F k (0 n k ), is de- 
termined, (n is the sampling number and k is 
the waveform number.) Then the waveform is 
passed to the weighting section, where a pro- 
cessor controlled value, W k , is used to scale 
the waveform obtaining WkFjjPn^) . Finally 
these values are summed in the'summer section 
obtaining the summed output of each of the 32 
tone generators. The output of course is a 
digital number which is converted into an 
analog voltage. 

As has been described earlier an important 
goal of the design is complete processor con- 
trol over tone generation. In the design the 
processor does have complete control over the 
synthesizer. The processor can write into all 
controlling RAM locations. First the pro- 
cessor controls the frequency of each tonal 
frequency oscillator by writing the frequency 
control word (FCW) into the frequency gene- 
rator RAM. Second, the processor is able to 
select the waveform, f k> by programming the 
waveform number in the waveform select ROM. 
Finally, the processor can select the scaling 
values, W k , for tone generation. Since all of 
the above are processor controlled they can 
change with time. However if a standard 8 
bit processor, such as the 8080, is used up- 
dating all tone generators may be limited to 
approximately once every 2 milliseconds. An- 
other important processor input is the wave- 
form; (F k (0 n>k ). By controlling the above 
parameters and waveforms the processor can 



completely specify the tonal waveform. 

The interface between the synthesizer and 
processor is a memory map interface such as is 
used in the 6800 and the PDP-11. Approxi- 
mately 128 bytes are required to specify the 
FCW, waveform number, and weight. Obviously 
if separate I/O addresses are devoted for each, 
control I/O space will be several reduced. In 
addition the waveform memories are not treated 
as memory space. Each waveform will require 
a IK by 12 bit memory. This could require 2K 
bytes addressing space. With multiple wave- 
forms the waveform memory space can easily 
become very large. Instead all waveforms are 
entered through a common port. As the data 
is entered an internal counter is incremented 
providing the address for the waveform RAM. 
Another port (memory address) is used to zero 
the counter and specify which waveform memory 
is to be loaded. Thus all waveform data is 
transferred to the same location. The inter- 
face circuitry allows the processor to 
write into the various RAM's (FCW, wave- 
form number, weight, and waveform) control- 
ling the synthesizer. 

The controller is a simple circuit con- 
sisting of a ROM and a register. As the ROM 
is sequenced the control waveforms are gene- 
rated. All the timing for the synthesizer 
is derived from this circuitry. 



FREQUENCY 
GENERATOR 



WAVEFORM 



_J 



FCW WRITE -i "_ T~ 

WAVEFORM WRITE 
WAVEFORM SELECT WRITE" 



WEIGHT 



ACCUMULA- 



OUT 



TION 



AND 
OUTPUT 



WEIGHT 
WRITE 



PROCESSOR 
BUS 



PROCESSOR 
INTERFACE 



.TO ABOVE 
CONTROLS 



Figure 2. Synthesizer block diagram. 



WEST COAST COMPUTER FA1RE 



88 



BOX 1579. PALO ALTO CA 94302 



Frequency Generator 

The frequency generator (see figure 3) 
generates the phase for each of the tona] 
generators. The generator is composed of a 
frequency control word (FCW) RAM, a phase RAM 
and an accumulator. All calculations are per- 
formed using two 8 bit words. Before tone 
generation the processor loads the FCW RAM 
with the two bytes specifying the FCW for 
each tone generator. This value is added to 
the previous tone generator's phase in two 
8 bit additions obtaining the new sample 
period phase. The RAM's used have a cycle 
time of about 250 nsec. Since there must be 
two memory reads and two memory writes it 
takes about 1 microsecond to generate the 
phase. Implementing 32 tonal generators re- 
quires about 32 microseconds resulting in an 
output sampling frequency of about 30 kHz. 
The most significant 10 bits of the phase is 
sent to the waveform section. 



PROCESSOR 
DATA 
BUS 



ADDRESS 




FCW 
WRITE 



Figure 3. Frequency generator. 

Waveform 

The waveform section (see figure 4) con- 
sists of either a 4K or a 16K word by 12 bit 
memory. There are three different types of 
operations using this memory. The primary 
cycle is the waveform generation cycle. Here 
the phase from the frequency generator is used 
as the memory address and the waveform value 
is read out. The next type of memory cycle 
is a processor write cycle. In this case the 
address comes from the internal word counter 
and the written data conies from the processor 
data bus. In this cycle the processor loads 
the waveform memory. The third type of cycle 
is the refresh cycle. Here a memory read is 
performed with the address coming from the re- 
fresh counter. At the conclusion of this 



cycle the referesh counter is updated. This 
refresh operation occurs every 32 microseconds 
for the 16K memory. 

The memory uses 16 pin 4K or 16K dynamic 
memory chips. These chips require the address 
to be multiplexed in conjunction with two sep- 
arate clocks: row address and column address 
strobe. These clocks are used in multiplex- 
ing the address to the memory chips. Since a 
memory fetch is required by the synthesizer 
once every microsecond and the memory has a 
0.5 microsecond cycle time a spare cycle is 
available every microsecond. The spare cycle 
can be used for either refresh or a processor 
write cycle. The refresh is given precedence. 
If the processor attempts to write data and 
the synthesizer is not ready a memory wait 
will be asserted until the synthesizer is 
available and the cycle is completed. It is 
anticipated the memory maybe loaded under DMA 
control. This will allow the waveform to be 
loaded as the note is initiated. 



REFRESH 
COUNTER 



WAVEFORM 

SELECT 

RAM 



PHASE 



U 



V v ir 



WAVEFORM 
LOAD 



J 



INTERNAL I 
COUNTER j 



MULTIPLEXER 



WAVEFORM 
MEMORY 



r 



WAVEFORM 
WRITE 



SAMPLE VALUE 



Figure h. Waveform section. 

Weighting 

The memory output is sent to the weighting 
section (see figure 2). First the data is con- 
verted from parallel to a 12 bit serial word. 
Then multiplied in the multiplier (25LS14) and 
finally summed in a serial adder (25LS15). 
The serial multiplier and adder have moderate 
speed and low power. Use of the multiplier 
results in a 1.0 microsecond multiply time 
and minimal chip count. 



WEST COAST COMPUTER FAIRE 



89 



BOX 1579, PALO ALTO CA 94302 



Processor Interface 



Switch Interface 



As far as the processor is concerned the 
synthesizer is a write only memory. This 
simplifies the design since no read bus 
drivers or multiplexers are required. The 
cycle is started by the processor setting a 
write request flip-flop asserting the memory 
wait line. When the synthesizer has an avail- 
able time slot the write operation is per- 
formed. At the conclusion the request flip- 
flop is cleared and the cycle is completed. 
There are two types of write cycles. The 
first is into the parameter RAM's (210Ts). 
These RAM's specify either frequency, waveform 
number or weighting and have an approximate 
250 nsec cycle time. The other RAM cycle is 
for the dynamic waveform memory. This requires 
a cycle time of approximately 0.5 microseconds. 

Con troller 

The controller consists of a read only 
memory (ROM) and a buffer register. This is 
a very simple controller with the successive 
RUM address determined from the ROM itself. 
As the ROM is cycled it generates the various 
controller signals. Since there is no inputs 
to the controller, other than the 20 MHz 
clock, the operation is straightforward. A 
simplified timing diagram is shown in figure 5. 
As can be seen each cycle consists of two 
major timing parts. In generating the phase, 
first the lower byte is calculated in the 
first half of the cycle. During the second 
half the upper byte of the phase is determined. 
The waveform memory uses this phase during the 
first half cycle to determine the waveform 
value. The last half of the cycle is" avai Table 
for memory refresh or for writing new waveforms. 
The weighting section loads the multiplier when 
the waveform data becomes available - in the 
middle of the cycle. 



SYNTHESIZER CYCLE- 



PHASE 
(LOWER BYTE) 



PHASE 

MEMORY 

READ 



PHASE 

MEMORY 

WRITE 



| WAVEFORM 

1 

! READ CYCLE 



PHASE 
(UPPER BYTE) 

PHASE '1 PHASE 
MEMORY j MEMORY 
READ | WRITE 



REFRESH 
OR PROCESSOR 
WRITE 



PHASE 
GENERATION 



WAVEFORM 
GENERATION 



The switch interface (see figure 6) 
allows the keyboard to communicate with the 
processor. Rather than putting switch de- 
bounce circuitry at each switch a common digi- 
tal debounce circuit was constructed. This 
results in much of the complexity of the in- 
terface. The counter continuously counts 
generating addresses corresponding to differ- 
ent switches. At each address a RAM is used 
to remember the status of a switch - essen- 
tially how long it has been on or off. To 
understand the operation first assume the 
switch is off. At this time the RAM will have 
zero stored for that switch. As the switch is 
turned on the status count will increase each 
time the counter reads the switch. Finally a 
switch "on" threshold is reached and that 
switch is considered on. The operation is 
similar when the switch becomes off. Hyste- 
resis has been added, by having the threshold 
when the switch is off greater than when the 
switch is on, to eliminate contact bounce. If 



TO NOTE SWITCHES 



FROM NOTE 




INT REQ 



T-p-i cnj_r , o ^ a S Ar n"tlissi. zs£* "timing'" a 



BUS 



Figure 6. Switch interface. 



WEST COAST COMPUTER FAIRE 



90 



BOX 1579, PALO ALTO CA 94302 



a switch change is detected, that is, the 
switch becomes on or off, an interrupt request 
flip-flop is set. This also stops the counter. 
The processor responds to the interrupt by 
first reading the counter to determine which 
key (switch) is changing. Then the processor 
uses the address to read the RAM and determine 
the switch status. This information is used 
by the software to control the synthesizer 
and will be discussed further in the software 
section. 

This may seem excessively complicated but 
it is much simpler than having a hundred or 
so debounce circuits. In addition the same 
switch interface can be used to interface the 
waveform selection switches - stop selectors 
on an organ. 

Software 

Introduction. The software to control 
the synthesizer and achieve the synthesis of 
a note can be broken down into four parts. The 
first parts deals with initializing the system 
such as setting up tables, pointers and 
counters. The remaining three parts deal with 
the start of a note, the synthesis of the note 
and termination of the note. The software 
does a great deal of data processing. The 
following paragraphs discusses the software in 
more detail in the hopes that the reader will 
get a better feel for the extent of the soft- 
ware. 

Initialization . The software has been 
written to accommodate 128 different notes 
(forty more than a piano keyboard and six more 
than two organ keyboards). Information on 
each note must be stored, so that when the 
note is played the software can fetch the in- 
formation from a note table. Table 1 shows 
the information that is stored for each note. 
The first entry, the timbre number, tells the 
software which output waveform the software 
should use to generate the given note. At 
present there are four output waveforms stored 
in the synthesizer card. The attack rate is 
used to determine how long the attack period 
will last. An eight bit register, the attack 
time, is summed with the attack rate every 
clock period. The clock period occurs every 
2 milliseconds. When the software detects a 
carry from the above addition, the software 
will change the state of the note from the 
attack state to the steady state. For 
example, if the attack rate is set at 4, 
the attack period will last 64 clock periods 
or 128 milliseconds. Each note has its own 
rate so the attack period can be different 
for every note. 

The third entry in the note array is the 
attack envelope number. At present there are 
four attack envelope tables stored in software. 



The attack envelope number indicates which 
envelope the software should use for the given 
note. 

TABLE 1 

Note Table 

Each Entry (128 Notes) Includes the 
Following Elements: 

Timbre number 

Attack rate 

Attack envelope number 

Decay rate 

Decay envelope number 

Steady state rate 

Steady state envelope number 

Frequency modulation rate 

Frequency modulation envelope number 

The note table also contains the infor- 
mation for the decay and steady state period. 
This information is used in the same manner 
as the attack information. However, there is 
one difference with the steady state rate. 
The software never tests the carry. This 
means that once the note is in the steady 
state it will remain in that state, except 
for one condition; when the software has de- 
tected that a key is no longer being played, 
the software will change the state of that 
note to the decay state and thus the note will 
be terminated at the end of the decay period. 

The final two entries in the note table 
are the frequency modulation information. 
This information would be used to modulate 
the output waveform. However, at present the 
software has not been written to implement 
frequency modulation. 

Besides the note table there is a status 
active table. The synthesizer can generate 
up to 32 notes simultaneously. The status 
active table contains information on only 
those notes that are being generated. The 

number of entries in the status active table 
depends on the number of notes that are simul- 
taneously being played. If no notes are being 
played, then of course there would be no entries 
in the status active table. The information 
stored in the table for each active note is 
shown on table 2. There are fourteen parameters 
listed for each note. The note number indicates 
which note from the note table is being gene- 
rated. The timbre indicates which output wave- 
form should be used to generate the note. The 
attack rate, attack envelope, decay rate, de- 
cay envelope, stready state rate, steady state 
envelope, frequency modulation rate and fre- 
quency modulation envelope is the same infor- 
mation that is stored in the note table. This 
information is transferred to the status active 
table when a note becomes active. The Fre- 



WEST COAST COMPUTER FAIRE 



91 



BOX 1579. PALO ALTO CA 94302 



quency Control Word (FCW) is directly related 
to the note number. The FCW is the actual in- 
formation feed to the synthesizer to indicate 
tonal frequency produced. Following the FCW 
in the table is the FCW synthesizer address. 
This address is the location the FCW is stored 
in the synthesizer. The next entry, amplitude 
synthesizer address, is the location the en- 
velope amplitude data is stored in the synthe- 
sizer. Finally, the timbre number address, 
this address is the location the timbre number 
is stored in the synthesizer. The initili- 
zation software sets up the pointers to the 
status active table and clears the status 
active counter to indicate that all 32 note 
generators are available. 



TABLE 2 
Status Active Table 

This table contains status information 
on all active notes. Up to 32 entries 
are possible with each entry composed 
of the following: 

Note number 

Timbre 

Attack rate 

Attack envelope 

Decay rate 

Decay envelope 

Steady state rate 

Steady state envelope 

Frequency modulation rate 

Frequency modulation envelope 

Frequency_ Con tro 1 Word ( FCW) 

FCW synthesizer address 

Amplitude synthesizer address 

Timbre number synthesizer address 



The initialization software also has the 
duty of setting up the timbre waveform in the 
synthesizer. The synthesizer card can hold 
four timbre waveforms. Each waveform consists 
of IK 12 bit words which breaks down to 1.5K 
bytes. The waveforms are stored on cassette. 
The software transfers the data from the cas- 
sette to the synthesizer card. There is no 
restriction on the waveforms. They may be a 
simple sine wave or a complex waveform. This 
freedom provides the means of emulating ins- 
trument sounds, since the instrument's wave- 
form can be stored in the synthesizer. 

As mentioned, a note can be in one of 
three states: attack, steady state or decay. 
A state table is used to indicate which state 
a note is in. There is a maximum of 32 en- 
tries in the state table. Table 3 shows the 
information contained for each entry. 



TABLE 3 
State Table 

This is the operating array for 
each active note. Each entry has 
the following elements. 

State 

Time 

Rate 

Envelope base address 

Amplitude synthesizer address 

Note number 



The first entry is the state. This en- 
try indicates which state the note is in. 
The second entry is the time. This entry in- 
dicates how long the note has been in the 
given state. Time is also a pointer to the 
location in the envelope table the note is 
presently using. The location contains the 
amplitude datum for the output waveform. 
Every clock period the rate is summed with 
time to give a new time and a new address for 
amplitude datum. If a carry is detected the 
software will change the state of the note to 
the next state. However, there is one problem, 
you do aot want to leave the steady state and 
start the decay until the note has been re- 
leased. To prevent this from occurring the 
software does not test the carry from the 
steady state time and rate summation. Thus 
the note will not go into the decay state 

until the software detects that the note has 
been released and chages the state of the note. 

The next entry in the table is the envelope 

base address.. This, is the address -of the first 

entry of the envelope table for the given state. 
By adding time with the base address, the lo- 
cation of amplitude datum is determined. This 
datum is loaded into the synthesizer amplitude 
address. 

The final storage table is the note fre- 
quency table. This table contains the frequency 
control word for each note. Each FCW consists 
of two bytes and since there are 128 notes, the 
table occupies 256 bytes. The initilization 
software loads the proper FCW for each note. 

Besides the above tables, the initiali- 
zation software sets up two stacks. One stack 
contains the addresses of the available gene- 
rators. The software loads the 32 addresses of 
the status active table. The second stack con- 
tains the addresses of the generators that are 
active. Since there are no active generators 
to start off, the software clears this stack and 
and clears the counter which indicates how many 
notes are active. 

The final requirement of the initialization 
software is to set up pointers to the starting 
addresses of the above tables and to set up 
the numerous counters that are used. 



WEST COAST COMPUTER FAIRE 



92 



BOX 1579, PALO ALTO CA 94302 



Note Detection . As mentioned earlier the 
software excluding initilization can be broken 
down into three sections: note detection, 
clock detection and note deletion. The note 
detection software is used when a note is 
first detected. When a note is first played, 
the keyboard hardware detects the note and 
causes an interrupt. The interrupt vectors the 
processor to the note detection software. The 
first thing the software does is obtain the note 
number from the keyboard hardware. Using the 
note number the software determines the Fre- 
quency Control Word and loads it into the status 
active array. Next the note parameters are 
moved from the note table to the status active 
array. The synthesizer addresses are moved to 
the status active table. The state table is 
set up with the attack parameters. The Fre- 
quency Control Word and timbre number are 
loaded into the synthesizer. The output ampli- 
tude is set to zero. The generator available 
pointer is incremented to point at the next 
available generator. If no generators are 
available, the generator full flag is set. 

The note detect software does not start 
the synthesis of a note but merely sets up the 
data so that it may begin. It is during the 
clock interrupt software that a output from 
the synthesizer is generated. 

Clock Detect . Every 2 milliseconds the 
software is interrupted and vectored to the 
clock detect software. The software will then 
cycle through the active notes. For each note 
the time datum and rate are summed to give the 
address of the amplitude data. If a carry is 
detected the software will change the state of ' 
the note. The amplitude data is transferred 
to the synthesizer card. If the software de- 
tects the end of the decay state then the soft- 
ware will delete the note from the status active 
table and the state table. It will decrement 
the generate available count to indicate that a 
generator has been freed. 



amplitude of each note can be individual con- 
trolled. The flexibility of the design is do 
to the fact that much of the processing and con- 
trol is in software. 

References 



R. B. Cotton, "Tempered Scale Generation 
From a Single Frequency Source," Journal 
of the Audio Etiaineerina Society* VoT. 20, 
pp. 376-382, June 1972." 



2. J. A. Moorer, "Signal Processing Aspects of 
Computer Music: A Survey," Proceeding of 
the IEEE, vol. 65, no. 4, pp. 1108-1137, 
Aug 1977. 



Note Delete . When the keyboard hardware 
detects the end of a note, an interrupt is 
sent to the processor. This interrupt cause 
the processor to vector to the note delete 
software. The software will obtain the note 
number from the hardware. It will go to the 
state array and change the state of the note 
to decay state. The clock detect software de- 
tects the end of the decay state and does the 
necessary bookkeeping as mentioned above. 



Conclusions 

The synthesizer described in this paper is 
intended to provide high quality musical syn- 
thesis. Up to 32 simultaneous notes can be 
synthesized. The attack, decay and steady state 



3. J. M Chowning, "The Synthesis of Complex 
Audio Spectra by Means of Frequency Modu- 
lation," Journal of the Audio Engineering 
Society, Vol. 21, no. 7, September 1973. 

4. J. Tierney, C. M. Rader and B. Gold, "A 
Digital Frequency Synthesizer," IEEE Trans. 
Audio Electroaccoust., vol. AU-19, pp. 48- 
56, March 1971. 

5. A. Heaberlin, U.S. Patent No. 4,003,003, 
"Multichannel Digital Synthesizer and 
Modulator," January 11, 1977. 

6. J. Snell, "Design of a Digital Oscillator 
Which Will Generate up to 256 Low Distor- 
tion Sine Waves in Real Time," Computer 
Music Journal, vol. 1, no. 2, pp. 4-25,1977 

7. Richard H. Dorf, "Electronic Musical Instru- 
ments," Radiofile, New York, 1968. 

8. A. Popoulis, "The Fourier Inteqral and Its 
Applications," McGraw-Hill, New York, 1962. 

APPENDIX 
MATHEMATICAL ANALYSIS OF TONE GENERATION 



To give those who are mathematically in- 
clined a better feel of the mechanics of the 
synthesizer, the following is a brief mathe- 
matical treatment of the synthesizer tone 
generation. The section consists of two 
parts. The first describes a mathematical 
representation of the tone generation pro- 
cess. The other section describes the errors 
introduced into the tone generation and shows 
how they can be determined. 

Assume we are interested in generating a 
periodic waveform, f p (t), which has period, 
Tp. In addition let us generate a function 
fs(«0 corresponding to a single cycle of the 
waveform but with period, 1: 



WEST COAST COMPUTER FA1RE 



93 



BOX 1579, PALO ALTO CA 94302 



f s (t/ y = f P (t) for °- t<T P - 



In generating this waveform we will generate a 
sampled representation of the signal with sanple 
period, T s . Thus we are only interested in 
fp(t) at discrete points/ specifically: 

t = nTg for — » < n < « . 

Since the waveform is periodic we are only in- 
terested in the "phase," not the integer number 
of cycles. This "phase," normalized between 
and 1, has zero representing the start of the 
cycle and one representing the end of the cycle. 

We can define a remainder function, REM, 
which gives us the normalized phase. Mathe- 
matical we first separate nT s into the integer 
number of cycles, K, and the phase at the nth 
sample period . 

nT s - KT p + »n T P 

This is done by finding K, the integer part of 
(nT s /Tp). Then 

K - K " KT p)/ T p 



or 



Thus 



"n ■ rem < n vy- 



<«n> * V nT s> 



We want a recursive method of generating 
f D (nT § ) or equivalent f s t0 n ). We can generate 
fs(0n/ by generating 0n recursively. We can 
generate n+ -| from n : 



J n+1 = REM (nT s /T p + T s /T p ) 
= REM (k + n + T s /T p ) 
= REM (0 n + T s /T p ) 



(1 



Thus we can recursively generate f s (0n) or 
equivalently f p (nT s ) by recursively generating 
n from (1) and then determine f s (gS n ) from p . 

Equation (1) is easily implemented by 
using a digital register representing n , and 
an adder. The remainder function is easily 
implemented by truncating the register output. 
This register and adder are often called the 
phase accumulation register. At each sample 
period T s /T p is added to the previous phase de- 
taining the new phase. This phase, n , is then 
converted into f s (0 n ) by table lookup. A RAM 
or ROM is used to represent t s (0 n ). 



Error Analysis 

If Mrfn) = fp(nT s ) with n = REM(nT<;/T p ) 
for all nt s then there will be no distortion 
provided, of course, the Nyquist criteria is 
meet: the highest frequency of f p (t) must be 
less than one half the sampling frequency, 
1/T S . 

However fp(nT § ) will not equal fs(# n ! for 
two reasons. First the waveform fs(*0 w ""^ 
have finite entries and will appear as in 
figure 7. This is because f s (0n) is constant 
between entries: in practice trie phase is 
truncated and the next lowest phase, say 0-, is 
is used to approximate f s (0 n ). Thus f s (0n) is 
generated - not fp(nT s ) and we can analyze the 
spectral content of this waveform to determine 
the distortion. The above introduces error 
when the phase has more resolution than the 
table used to represent f s (0n)- Of course 
if the phase, n , is not truncated than there 
are no errors introduced. But typically the 
phase is generated with more resolution and 
will be truncated. The other source of error 
is quantization error. Since the word length 
used to specify the sample value is finite, 
errors are introduced. This results in white 
noise (constant noise power density as a 
function of frequency) and can be controlled 
by making the word length long enough. 12 
bits gives a signal-to-noise ratio of 72 dB 
and is probably adequate. First the spectrum 
of f s (0 n ) approximating the waveform f p (t ) 
will be determined. A single cycle of the 
periodic waveform is sampled for storage in 
the table or memory (see figure 7). The 
sampling interval is the period divided by N, 
the number of entries in the waveform table. 
TM waveform is. sampled at each point and then 
this value is held constant until the next 
point (flat-top reconstruction). Thus the wave- 
form in the memory, 
presentation. 



has the following re- 



Ut) = 



where 



N-l 
n=o 



h(t-n/N) f s (n/N) 



h(t) = 



for 







o< t<l/N 
otherwise 



The tone generation process essentially deter- 
mines a phase and then uses this to lookup the 
waveform value in the memory. This waveform 
determining process can be separated into 
two equivalent processes. First the waveform 
will be produced from the ROM at the correct 
frequency with infinite precision. Next this 
signal will be sampled at the sampling rate, 
1/T S . This is identical to using the phase 
directly to determine the waveform value. 



WEST COAST COMPUTER FAIRE 



94 



BOX 1579, PALO ALTO CA 94302 



f U) 

s 




-f (t/T ) 
P s 



Ln(x] 



k. %v<^"»r -r- 




Figure 8. 



harmonic error 



Spectrum of memory waveform 
(sinewave) 



Figure 7- Memory 



waveform, f (^) 
s 



First the waveform from the ROM at the 
correct frequency will be a periodic signal 
identifical to a single cycle of the memory 
waveform with frequency 1/(T S /T p ). This wave- 
form has the following representation: 



f(t) = Z h((t-n/N)T p ) 
h=-« 



f w (nT s ) 



Here f is a periodic signal with f (nT ) = 
f s (REMTnT $ /Tp). This has the following spec- 
trum (see figure 8): 



F(u>) = 



n=-» 



F w (o) -na) s ) 




Obviously the waveform is not bandlimitea. 
There are abrupt transistions between entry 
points. This waveform will then be sampled at 
the sampling rate, T Let us further assume 
the signal we are generating is a sinewave as 
has been represented in figures 7-8. This isn't 
necessary for error analysis but it does allow 
us to separate harmonic error from other errors. 
Essentially all spurious frequencies above h 
the sampling rate are translated into the region 
-T s /2 to T~/2 (see figure 9). Thus we can 
separate the error into two parts: harmonic and 
non harmonic. All harmonic error less than 
Kyquist bandwidth will remain undistorted. 
Since this error is harmonic it will not be as 
important as the non-harmonic error and will be 
disregarded here. However frequencies above 
the Nqyuist bandwidth will appear as spurs. 
The waveform to be generated can be separated 
into harmonics or partial s. The fundamental 
will have one cycle stored in the memory thus 
N will be 1024 because all memory locations are 
used to specify the cycle. However for the 
other partial s more cycles will be present in 
the memory and the effective N will different. 
For instance, for the first harmonic two cycles 
will be represented in the memory. Therefore 
the effective N is 512. A procedure for de- 



-Fundamental (l/T ) 
P 



-U 



NT 



NT 



2T 



/ 



(3/(NT )-l/T ) will 

P P 

produce spur at 

(3/(NT )-l/T )-l/T 
p p s 



-U 



UJ+i. 



/ 

L 



Spur produced 



Figure 9. Spectrum of generated signal. 

termini ng the non-harmonic errors is as 
follows: For each partial, determine the 
effective N. This will be 1024 divided by 
the harmonic number plus 1. Next determine the 
first frequency above the Nyquist bandwidth as 
above. This will be the strongest spur and 
all frequencies above this will be spurious. 
Repeat this for each partial in the generated 
signal. In addition the spurs are proportional 
to the strength of the corresponding partial. 
Two possible approaches to determine allowable 
error could be considered here. One might be 
to consider just the maximum spur. But pro- 
bably a better error function is to determine 
the total spurious error. This will be a power 
summation over all spurs and over all partial s. 
Using this for a particular waveform and fre- 
quency the signal-to-noise ratio can be de- 
termined. 



WEST COAST COMPUTER FAIRE 



95 



BOX 1579, PALO ALTO CA 94302 



"DESIGNING YOUR OWN REAL-TIME TOOLS 
A MICROPROCESSOR-BASED STEREO AUDIO SPECTRUM ANALYZER FOR 
RECORDING STUDIOS, ELECTRONIC MUSIC, AND SPEECH RECOGNITION 

Byron D. Wagner 
1701 Viewmont Dr. 
Los Angeles, Ca. 90069 
213-982-6200 



Abstract 



This paper describes the relative 
ease with which an inexpensive person- 
al computer can be configured into a 
highly sophisticated, personalized 
tool or test instrument with perfor- 
mance equaling or exceeding that of 
costly, commercially available, less 
flexible equipment. The author 
details the design, construction, 
software development, smoke-test- 
ing and calibration of such a device 
- a real-time, 1/3 octave audio 
spectrum analyzer using a color 
television as a graphic display 
screen. Applications for this part- 
icular device are discussed and 
guidelines are offered for custom- 
izing systems to the users needs, 
either as a standalone instrument 
or as an automated controller to be 
integrated into an existing unit. 
Examples suggested include: mixing 
consoles, theatrical lighting boar- 
ds, and a scanning electron micro- 
scope. 

Tools 

According to some scientists, 

the- .^aixi-lity to create artificial 

extensions of fingers, specialized 
for different purposes, is what 
originally separated cavemen from 
the animals. History is split into 
periods representative of the mat- 
erials used to form the tools, ie. 
the Stone Age, the Bronze Age. As 
man grew more sophisticated, so 
did his tools. Bits of sharpen- 
ed rock and bone for cutting and 
grinding became knives and spear 
points, later arrows. With the 
invention of the wheel, man was 
no longer totally dependent on 
beasts of burden, and transpor- 
tation became more efficient. 

By the Middle Ages, technol- 
ogy and craftsmanship had raised 
the original utilitarian cutting 
tool to the level of being a power- 
ful symbol. Ornately jeweled swords 
and scepters conveyed authority, 
items of ritual never put to prac- 
tical use. For the most part, how- 



ever, the advance of technology was 
not an end in itself, but a means of 
gaining leverage over materials used 
in making the physical world a better 
and safer place to live. The fact that 
people could derive pleasure from the 
esthetic challenges of organization is 
displayed in the creative patterns 
commonly found in early pottery and 
weaving, with even the most common 
household items crossing the line 
between strict functionality and the 
communication that is art. 

When I was young, my father took 
me to visit a craftsman who made his 
living by repairing musical instru- 
ments, expecially brass horns. As I 
was admiring the amazing assortment of 
metal-working implements, I asked where 
someone might buy such unusual, special- 
ized equipment. "I wouldn't know", he 
replied, "Imake my own myself", and he 
smiled with pride. 

People have always been envious of 
such highly personalized and custom- 
ized tools. From the gunfighter's 
pearl-handled revolver (with the hammer 
spur filed off to facilitate quick 
draws), to the pool hustler's weighted 
and balanced pool cue, or the profess- 
ional musician's instrument, voiced 
just to his liking. In each case, the 
modifications are justifiably practical 
necessities for the pro, but luxuries 
to the layman (novice). 

Personal Computers - Getting Beyond 
"Other People's Programs" 

The personal computer provides the 
opportunity to create devices whose 
complexity and degree of personalization 
is limited solely by the imagination 
and motivation of the user. It is an 
accessible alternative for the solution 
of problems. In other words, one can 
trade an abundance of time for a non- 
abundance of money. With the additional 
advantage that, once a written logic 
framework or program is established, 
it can be easily adapted for later uses. 
Organizing information utilizes the same 
techniques whether the data manipulated 



tfEST COAST COMPUTER FAIRE 



96 



BOX 1579, PALO ALTO CA 94302 



repr 

grap 

tact 

sigh 

poin 

larg 

retr 

down 

The 

such 

most 

ence 

subs 

cost 



esent s 
h reco 
s , or 
t ing c 
t on t 
e syst 
ieval 

and a 
employ 
as di 
as us 
works 
tant ia 



a stamp 
rds , re c 
an amate 

00 rdinat 
he mass 
em data 

t echniqu 
pplied t 
ment of 
rectorie 
eful as 
themsel 

1 saving 



col 
ipes 
ur a 
es . 
memo 
base 
es c 
o ho 
ref e 
s or 
s tor 
ves 
s in 



lectio 
, ham 
s t rono 

Even 
ry pri 

s t ora 
an be 
me sys 
rence 

indie 
ing th 
and of 

equip 



n, phono- 
radio con- 
mer's 
at this 
ce curve , 
ge and 
scaled 
terns, 
pointers 
es is al- 
e refer- 
f ers a 
ment 



Even though the mass marketplace 
for personal computing products is 
still relatively small in relation 
to other hobbies, the array of 
existing building blocks is pheno- 
menal. Eight-and sixteen-bit CPU's 
cheap RAM and ROM memory, inexpensive 
tape and disc storage, terminals, 
quality hard-copy printers, medium 
resolution black-and-white or color 
displays, speech generation and 
recognition devices, communication 
modems and touch-tone transceivers, 
remote control of household appli- 
ances using AC lines, music syn- 
thesizers, analog to digital and 
digital to analog converters, digital 
logic analyzers, digital frequency 
counter and digital multimeter sub- 
systems, realtime clocks, and even 
medium resolution video digitizers 
exist, most compatible on a "plugin 
and go" basis. Yet perhaps a greater 
benefit is the willingness on the 
part of most manufacturers to pro- 
vide not only prewritten software, 
but also technical support. This 
includes schematic diagrams and 
"theory of operation" information 
on a nuts and bolts level (as 
opposed to the traditional "once 
you buy it we don't want to hear 
from you" supplier-consumer re- 
lationship . ) 

Real Time 

Part of the precision with which 
we operate our hands and fingers 
stems from the fact that they are 
able to send feedback signals to the 
brain that controls their movements. 
This is a classic example of a 
closed-loop servo system (as oppo- 
sed to blindly applied brute force.) 
The system can be disturbed, though, 
if a delay is introduced either 
between the sensing apparatus and 
the controller, or the controller 
and the actuators. With children 



or adults, the more quickly rein- 
forcement follows action, the 
faster the learning process is 
accomplished. This builds the pattern 
of challenge, motivation, and reward 
into a constructive "vicious circle." 
A significant benefit of this behavior 
is that more good ideas will be follow- 
ed through to completion, instead of 
being abandoned because of petty but 
time-consuming obstacles. Studies in 
human ergonometric design confirm 
practical experience relative to the 
speed and accuracy with which a person 
can assimilate raw data. Computer hex 
codes are harder to understand than 
conversational English, which in turn 
is more difficult to read than small 
strings of numbers. The simplest way 
to communicate rapidly comprehensible 
information reflecting changing signal 
parameters is through the use of analog 
position indicator movements referenc- 
ed to a fixed linear or logarithmic 
scale. Convention in the past dictated 
that separate functions required sep- 
arate displays, whether visually 
oriented (meters and gauges) or audio 
(buzzers, bells, and chimes). But 
experience has shown that human beings 
are capable of deciphering numerous, 
although subtle, details from complex 
integrated or holistic sets of stimuli. 
An experienced mechanic listening to a 
car's engine can diagnose many specific 
different ailments relating to carbu- 
ration, valve, timing, and mechanical 
balance problems in much the same way 
as a physician examines a patient. 



An example 
applied to el 
may be found 
and even some 
When a standa 
stereo progra 
channel going 
cuits and the 
horizontal di 
"scrambled eg 
This pattern 
amplitude , s t 
phase, freque 
characterist i 



of this type of design 
ectronic test instruments 
in many recording studios 

home hi-fi systems, 
rd oscilloscope is fed 
m material, with the left 

to vertical drive cir- 

right channel feeding 
rve circuits, a complex 
g" pattern appears, 
simultaneously shows peak 
ereo separation, relative 
ncy, and dynamic envelope 
cs for both channels. 



It has become feasible to design 
instantly reconf igurable output inter- 
faces with ultimte flexibility without 
giving up the capability of providing 
the ultimate in specialization and 
detail. Such devices can be person- 
alized to the idiosyncracies of an 
individual (whether the user is left- 
handed, speaks a foreigh language, 
is male, female, or even a child or 



WEST COAST COMPUTER FAIRE 



97 



BOX 1579. PALO ALTO CA 94302 



animal), with different pre-programmed 
levels of complexity. Obviously, this 
is totally opposite to traditional 
instrument design practices and does 
offer disadvantages. These include 
the lack of standardization of oper- 
ation and maintenance procedures. 
However, standards will probably emerge 
Hopefully, they will be generated on 
the basis of need and logic, instead 
of manufacturing expediency and 
economy . 



Obviously, a 
analysis tool sue 
describing, when 
element for a pro 
is capable of ere 
structure suitabl 
mation or indepen 
manual assistance 
even complete ove 
possible while st 
housekeeping func 
trim logic to all 
much or as little 
desired. A good 
would be an autop 
could coordinate 
the direction hea 
dance functions h 
the pilot. 



powerful s 
h as we ha 
used as th 
cess-cont r 
ating a la 
e for comp 
dend actio 
, supervis 
rride by a 
ill retain 
tions and 
ow the ope 
responsib 
example of 
ilot on a 
turns, eve 
ding and o 
ad been di 



ystems 
ve been 
e feedback 
ol device , 
yered 

lete auto- 
n. Yet 
ion, or 

human is 
ing the 
automat ic 
rator as 
il ity as 

this 
plane that 
n though 
ther gui- 
sabled by 



A Real-World Example 

In the field of professional audio, 
historically, control of signals has 
been limited primarily to the mani- 
pulation of the amplitude of informat- 
ion derived from re_a.l-w.o.r 1 d. .so:urc£s. 
Typically, these are musical instru- 
ments, voices, or in the case of motion 
pictures, and television, sound effects 
or background sounds. In recent years 
this has been expanded to include equal- 
ization (still a function of amplitude), 
artifical reverberation and echo, multi- 
track recording, phasing and digital 
delay lines (time), and most recently, 
pitch or frequency (made possible by 
the use of analog to digital and digital 
to analog conversions). Attempts at 
either the direct synthesis or modifi- 
cations of complex waveforms were limi- 
ted for the most part to electro-mech- 
anical devices (Hammond organ tone 
wheels and Leslie rotating loudspeakers) 
or prohibitavely time-or money- consum- 
ing procedures using large-scale com- 
puters (Music V). Additionally, the 
computer programs did not operate 
interactively in real-time. This state 
of affairs explains why commonly used 
indicators throughout the industry in 
broadcast stations, recording studios, 



and communication networks were 
generally VU or Peak Program meters, 
to be used in conjunction with loud- 
speakers and sometimes an occasional 
oscilloscope. 

Things, however, are changing fast. 
The changes result from such factors 
as the consumerizat ion and mass- 
marketing of voltage-controlled 
synthesizers like the Moog and ARP , 
the skyrocketing technology of large- 
scale integration, and the continu- 
ing demand for more control and real- 
ism in audio recording and sound 
reinforcement. These changes also 
brought about the need for more 
sophisticated measurement tools at 
affordable prices. The ability for 
a human to tell the difference between 
musical instruments, for example, a 
flute or a clarinet, is due to the 
difference in harmonic structures 
and dynamic envelope changes that 
occur during the duration of a note. 
These are determined by the mechanics 
of vibration peculiar to the gener- 
ation of the sound emitted by that 
particular instrument. In the case 
of the flute, a vibrating column of 
air; in a clarinet, vibrating reeds 

In response to this demand, re- 
searchers developed tools like the 
spectrograph, a device which splits 
audio signals occurring in the 
spectrum between twenty and twenty 
thousand vibrations per second into 
bands, much as a prism devides white 
light into its --c-ompon-ea-t- parts « This 
was accomplished by passing complex 
signals through a turnable filter, 
plotting the results, and repeating 
in an overlay fashion after retun- 
ing the filter. This yields a result 
similar to the graphs popularly 
known as "voice-prints". Early 
attempts at real-time analysis were 
cumbersome due to the number of 
filters and meters necessary for 
reasonably discrete identification 
of separate harmonics. If the spec- 
trum is divided into octave bands, 
the required number of filters is ten. 
If half-octave, nineteen; third- 
octave, twnety-seven. That meant 
dozens of tubes and lots of heat. 
In early 19 7 1, Hewlett-Packard in con- 
junction with Altec-Lansing, intro- 
duced an audio spectrum analyzer in 
a relatively small, rack-mount case 
with a CRT display, selling at the 
breakthrough price of approximately 
$3,000. This was followed a few 
years later by a unit from Amber 



WEST COAST COMPUTER FAIRE 



98 



BOX 1579. PALO ALTO CA 94302 



Electro Designs of Montreal. It the most attractive points was that 
features an LED matrix display, with all the hardware, with the exception 
dimensions of ten by ten, and retails of filter banks and input signal con- 
for about $2,000. (See Figure #1) The ditioning circuit ry, was available off 
Ivie Corporation, based in Utah, is the shelf. Final choices included : 
now marketing a palm-sized, hand-held, an IMSAI mainframe with front panel 
audio spectrum analyzer with built-in and CPU, Seals and IMS 8K memory 
LED matrix display and calibrated cards, a Sony color monitor* a Byte- 
microphone. This sells for less than saver card, three D+7A's (analog 
half a thousand dollars. to digital converters) and a Dazzler 

color video display interface, all 

As the availability of such devices from Cromemco. (Fig. #2) 
grew, so did their uses. eg.: the study 

of acoustics and musical instrument tone The display format chosen was 

generation, bandpass characteristics of that of vertical, multi-colored bars, 

amplifiers, tape machines, and so on, whose heights rise and fall with the 

and the practice of tuning or "voic- output of the corresponding filter/ 

ing" music reproduction or sound rein- peak detector combination. The 

forcement systems using graphic equal- basic algorithm for translating 

izers to compensate for room charac- analog input amplitude changes to 

teristics, and displays of power band- corresponding changes in bar-graph 

width in disc mastering chains. height was developed, and a test 

program written in basic, along with 

The Hardware a routine that erased the screen at 

the onset of operation. Simply 
In the course of designing a pro- stated, a scanning pattern is estab- 
fessional recording facility with lished and, for a particular bar, a 
built-in video tie-lines connecting the value is input and compared with the 
performing, control-room and playback present position on the screen. If 
areas, the idea of including such an the screen value is greater than the 
analyzer with the ability to distri- input value, a block of color is 
bute a display to the video monitor written at that position. If not, 
in the control room (saving valuable the background color, in this case 
space) coupled with the possibility black, is written into the position, 
of providing the musicians with (See Fig. #3) With the test program 
immediate feedback corresponding to running under Altair, 3.1 Basic at 
their dynamics, proved irresistable . standard processor speed, it took 
Unfortunately, none of the commer- approximately twenty seconds just 
cially available units offered such to write one screen featuring 8 bars, 
a capability without the need for Since the minimum update speed nec- 
some kind of scan conversion, for essary for smooth and natural step- 
compatibility with NTSC video signal less transitions between frames is 
standards. A little investigation about a thirtieth of a second, it 
and guesst imating led to a potentially was both necessary and desirable to 
feasible design for accomplising implement the program in machine 
not only these goals, but a host of language. An early incarnation of 
others: color display, programmable the assembly listing for such a 
overload threshold, with a provision machine language program (still 
for matching existing disk cutter- displaying only 8 bars) is shown 
head curves, the ability to freeze a in Fig. #4. 
frame of display, or display frozen 

frames sequentially for a slow- Study will reveal the relatively 

motion effect (in forward and rever- crude nature of the counting loops 

se) to facilitate the analysis of and the fact that the entire bar is 

signals for music and voice syn- repainted each scan. The quadrant 

thesis and recognition, and the positioning and jumping arithmetic 

ability to display a large number was made necessary by the architec- 

of fullband signals from multiple- ture of the display used - a Cromemco 

channel tape machines or mixing Dazzler (high resolution color mode), 

consoles, to eliminate the head Any memory mapped video display would 

swiveling (and resulting neckache) work equally well. The software was 

from trying to read thirty-two VU expanded and further refined to allow 

meters at the same time. One of interaction with simple switches so 

that a terminal would not be necess- 



WEST COAST COMPUTER FAIRE 99 BOX 1579, PALO ALTO CA 94302 



ary in the case of dedicated operation 
Hardware bugs were chased down and 
exterminated and PROMS containing the 
final version of software were burned. 
The device was calibrated using the 
time-honored tradition of applying 
signals of known frequency and ampli- 
tude while making the corresponding 
necessary adjustments for proper 
indicat ion . 



success of the project with sugges- 
tions or construction assistance. 
Notably: Mr. Rick George, Mr. Mike 
Ronstadt, Mr. Gale Lester, as well 
as Ms Sally Grimm and Ms Annie 
Moss whose typing tootsies made this 
paper possible, and a special thanks 
to Mr. Allen Immerman for his fear- 
less and tireless help in toggling 
the beast into submission. 



The resulting display is a 
tremendiously useful device - although 
the beauty of its fascinating patterns 
set to music may lead the more cyncial 
to cast aspersions on the purity of 
pragmatic intent of its creator. By 
plugging in other types of sensors, 
eg.: thermocouples, optical position 
encoders, anemometers, medical elec- 
trodes; and changing the reference 
scale and label overlay data, vir- 
tually any type of measurement para- 
meters can be accomodated. The 
dynamic range, resolution, response 
time and ballistics, averaging 
criteria, linearizarion or log scal- 
ing and weighting, can all be defined 
by software. With the addition of a 
modem, remote polling and data acqu- 
isition become possible; with a mass 
storage device (disc, tape, bubble 
memory) the opportunity for exten- 
sive signal analysis and hard copy 
plots. Yet with all this flexibil- 
ity, the system can satisfy the most 
subtle demand for highly specialized 
applications. If time permits, the 
author will discuss interfaces with 
control elements in theatrical 
lighting systems and the automation 
of recording studio mixing consoles 
and electronic music synthesizers 
as well as a scanning electron micro- 
scope function control and stage 
posit ioner . 



About The Author 

Byron D. Wagner, 26, is originally 
from Omaha, Nebraska. He is currently 
employed in the Los Angeles area as 
an independent record producer and 
recording engineer - in addition to 
functioning as a consulting engineer 
for recording studio design, constru- 
ction, and installation. Past and 
current clients include: Carole King, 
Linda Ronstadt, Peter Asher, Music 
Recorders, Inc., Motown Records, 
Ike & Tina Turner, Steve McQueen and 
Ali McGraw. His professional 
affiliations include: The National 
Academy of Recording Arts and Sciences, 
The Audio Engineering Society, the 
SMPTE, the Magic Castle, and the 
American Federation of Television 
and Radio Artists. His still photo- 
graphy has been featured on several 
album covers and he is the host of 
the PBS television program "Singer/ 
Songwriter". His education was 
assembled through such diverse 
facilities as the Omaha public school 
system, Ohio University, Brigham 
Young University, and the Eastman 
School of Music. (And he wants to be 
a movie star when he grows up.) 



Conclus ions 

In view of the current mind- 
boggling leaps in technology and 
the complexity of available hard- 
ware, it is comforting to consider 
that, far from being closed, the 
available options for designing and 
molding a personalized, custom- fit ted 
set of tools with which to create and 
communicate are as rewarding and open 
as in the past, if not more so. 

Acknowledgements 

The author would like to thank 
all those who contributed to the 



WEST COAST COMPUTER FAIRE 



100 



BOX 1579, PALO ALTO CA 94302 



OD 



A^-v^-coi 



D-^^-cy 



>^<rT> L^ INPUT V^ 



ATTEN 



o 



LED 



+5v 



+15v 



-15v _ 



BAND, PEAK: 
PASS 1 DCTR 

filter; j 



N. o LEVEL 



COMPARATOR 



'M- 



? MEM A 
9MEMB 



ERASE 



r-alfl- 



?D 



-TJ2H 



H34 



10 x X) 
LEO 

MATRIX 



□ 



ENTER MEMORY A 

ERASE 



r-flic- 



fd[ 



LjT 1".". _"■ Epl 



ENTER MEMORY B 



CONTROL LOGIC 
AND 
CLOCK 



BLOCK DIAGRAM 



FIGURE 1 



WEST COAST COMPUTER FAIRE 



101 



BOX 1579, PALO ALTO CA 94302 




CM 
LU 

CO 

D 



WEST COAST COMPUTER FA1RE 



102 



BOX 1579. PALO ALTO CA 94302 



10 OUT 14, 144 
20 OUT 15,16 

30 B = 

31 Z=8192 

32 POKE Z,B 

33 Z=Z+1 

34 IF Z 8 70 5 GO TO 32 
40 C=51 

50 P=8192 

60 1=25 

7 GO SUB 50 

80 C=85 

90 P=8194 

100 1=26 

110 GO SUB 5 00 

120 C=l 19 

130 P=8196 

140 1=27 

150 GO SUB 500 

160 C=153 

170 P=8198 

180 1=20 

19 GO SUB 500 

200 C=187 

210 P=8200 

220 1=29 

230 GO SUB 500 

240 C=221 

250 P=8202 

260 1=30 

270 GO SUB 500 

280 C=255 

290 P=8204 

300 1=31 

310 GO SUB 500 

320 C=51 

330 P=8206 

340 1=33 

350 GO SUB 500 

360 GO TO 40 

500 D=INP(I) 

510 L=C8704-P) 

520 IF L» O THEN RETURN 

530 IF (D"2). =L THEN POKE P,C: TO GO 550 

540 POKE P,B 

550 LET P=P+16 

560 GO TO 510 



FIGURE 3 



WEST COAST COMPUTER FAIRE 



103 



BOX 1579. PALO ALTO CA 94302 



ASSM 0700 








0700 31 


A5 


07 U 


0010 


BEGIN LXI SP, TOPS+20 (SET STACK POINTER) 


0703 3E 


88 




0020 


MVI A,88H (SET DAZZLER 


0705 D3 


OE 




0030 


OUT 14 FORMAT & 


0707 3E 


10 




0040 


MVI A* 16 PICTURE 


0709 D3 


OF 




0050 


OUT 15 LOCATION) 


070B 01 


00 


02 


0060 


LXI B/512 (SET ERASE LOOP COUNTER) 


070E 21 


00 


10 


0070 


LXI H/1000H (SET ERASE LOCATION) 


0711 36 


00 




0080 


ERASE MVI M, 00 (DRAW BLACK (S> LOCATION) 


0713 OB 






0090 


DCX B (DECREMENT E.L. CNTR.) 


0714 23 






0100 


I MX H (ADVANCE TO NEXT LOCATION) 


0715 78 






0110 


MOV A,B(LOAD COUNTR. TO ACCUMULATOR) 


0716 FE 


00 




0120 


CPI (CHECK IF CNTR. IS DEPLETED) 


0718 C2 


11 


07 


0130 


JNZ ERASE (IF NOT, REPEAT LOOP) 


071B 79 






0140 


MOV A*C (REPEAT CHECK 


071C FE 


00 




0150 


CPI ON OTHER BYTE 


071E C2 


11 


07 


0160 


JNZ ERASE OF LOOP COUNTER) 


0721 06 


33 




0170 


BARA MVI B, 51 (LOAD COLOR OF FIRST BAR) 


0723 DB 


19 




0180 


IN 25 (LOAD A/D DATA FROM PORT 25) 


0725 21 


00 


10 


0190 


APLAC LXI H, 1000H (SET START ADDR. OF BAF 


0728 CD 


74 


07 


0200 


CALL PAINT (GO TO DISPLAY SUBROUTINE) 


072B 06 


55 




0210 


BARB MVI B,85 


072D DB 


1A 




0220 


IN 26 


072F 21 


02 


10 


0230 


BPLAC LXI H, 1002H (REPEAT FOR NEXT 


0732 CD 


74 


07 


0240 


CALL PAINT BAR) 


0735 06 


77 




0250 


BARC MVI B, 119 


0737 DB 


IB 




0260 


IN 27 


0739 21 


04 


10 


0270 


CPLAC LXI H, 1004H (" ") 


073C CD 


74 


07 


0280 


CALL PAINT 


073F 06 


A3 




0290 


BARD MVI B, 163 


0741 DB 


1C 




0300 


IN 28 


0743 21 


06 


10 


0310 


DPLAC LXI H, 1006H (" ") 


0746 CD 


74 


07 


0320 


CALL PAINT 


0749 06 


BB 




0330 


BARE MVI B, 18 7D 


074B DB 


ID 




0340 


IN 29 


074D 21 


OS 


10 


0350 


EPLAC LXI H* 1008H (" ") 


0750 CD 


74 


07 


0360 


CALL PAINT 


0753 06 


DD 




0370 


BARF MVI B.,221 


0755" DB 


IE 




0380 


IN 30 


0757 21 


OA 


10 


0390 


FPLAC LXI H, 100AH (" ") 


075A CD 


74 


07 


0400 


CALL PAINT 


075D 06 


FF 




0410 


BARG MVI B.,255 


075F DB 


IF 




0420 


IN 31 


0761 21 


OC 


10 


0430 


GPLAC LXI H* 100CH (" ") 


0764 CD 


74 


07 


0440 


CALL PAINT 


0767 06 


DA 




0450 


BARH MVI B..0DAH 


0769 DB 


21 




_ J3A6Q 


. LN .33 __... 


076B 21 


OE 


10 


0470 


HPLAC LXI H* 10 0EH (" ") 


076E CD 


74 


07 


0480 


CALL PAINT 


0771 C3 


21 


07 


0490 


JMP BARA (REDRAW SCREEN) 


0774 OE 


7F 




0500 


PAINT MVI C, 7FH (LOAD LOOP&POSTN. CNTR. ) 


0776 11 


10 


00 


0510 


LXI D, 16 (LOAD MEMORY JUMP INCRMT.) 


0779 00 






0520 


SIDOR NOP 


077A 00 






0521 


NOP 


077B 00 






0522 


NOP 


077C 00 






0523 


NOP 


077D B9 






0524 


CMP C (COMPARE INPUT VALUES-SCREEN POSTN.) 


077E 00 






0525 


NOP 


077F 00 






0526 


NOP 


0780 00 






0527 


NOP 


0781 00 






0528 


nop ,- rtAL 

JC BLACK In F'BOS IT ION. GftEATER. G T R) 


0782 DA 


8F 


07 


0530 


0785 70 


0540 


MOV M, B (IF NAT, DBAWvCOLOR^ /A - v fV 


0786 19 

0787 OD 






0550 
0572 


INCRM DAD D ^— f\ A R (ADVANCE POSTN.) 
DCR C 


0788 OD 






0573 


DCR C (DECREMENT LOOP&POSTN. CNTR. ) 


0789 OD 






0574 


DCR C 


078A OD 






0575 


DCR C 


78B F8 






0580 


RM (RETURN FROM SUBRTN.IF DONE) 


078C C3 


79 


07 


0590 


JMP SIDOR (CONTINUE BAR) 


078F 36 


00 




0600 


BLACK MVI M, 0H (DRAW BLACK) 


0791 C3 


86 


07 


0610 


TOPS JMP INCRM (CONTINUE LOOP) 


EXEC 0700 








FILE /FREAQ/ 






FREAQ 0100 


061E 







FIGURE 4 



WEST COAST COMPUTER FAIRE 



104 



BOX 1579. PALO ALTO CA 94302 



PERSONAL COMPUTING AND THE PATENT SYSTEM 
copyright 1978 DBH 
David B. Harrison, Esq. 
Owen, Wicker sham & Erickson 
433 California St., San Francisco, CA 94104 
(415) 781-6361 



Abstract 

A cursory view of the patent 
system with focus upon its appli- 
cation to personal computing. The 
difference between inventions 
and patents, and requirements for 
patentability including a general 
discussion and update on the pat- 
entability of software; the rela- 
tionship of patents to copyrights 
and trade secrets; and, obtaining 
licensing and enforcing patents — 
why bother? 

Introduction 

When you stop to think about 
it, we live in a truly exciting 
time. And this fact is proven, 
at least, by our common interests 
in the present and future of 
personal computing which bring 
us together at this Second West 
Coast Computer Faire — note 
please that the word "faire" is 
spelled F-A-I-R-E. In Marin 
County where I live, in late sum- 
mer each year there is a Ren- 
aissance Pleasure Faire, spelled 
F-A-I-R-E, which celebrates the 
Renaissance, that glorious period 
of growth in the arts and sciences 
of four hundred years ago. Today, 
we celebrate a new Renaissance, 
a golden age of computer power and 
promise, an advanced technology 
which we have inherited from all 
of the innovations of the past, 
and yet which is but a crude and 
primitive glimpse and promise of 
what we can expect for the future. 

Over the last three hundred 
years it has come to be recognized 
by enlightened people and their 
governments that human progress 
is promoted, particularly in the 
useful arts, by having laws which 
protect creative works of author- 
ship and invention. What I'm 
talking about are the copyright 
and patent laws which protect 
authors and inventors.! Now, 
by laws which protect authors 
and inventors, I mean laws which 
shield them from infringements 
by others. I do not mean laws 



which grant inventions to inven- 
tors or works of authorship to authors 
- — they own their original works from 
the moment of creation. 

What our intellectual pro- 
perty laws do is to recognize 
that unless a reasonable legal 
shield is provided, authors and 
inventors simply will not be 
motivated to disclose their works 
and discoveries — they will 
keep them secret, and the rest of 
us will not learn about them and 
have a basis upon which to make 
improvements. Leonardo Da Vinci's 
secret discoveries or speculations 
in the Fifteenth Century about the 
parachute and the helicopter2 were 
uncovered and appreciated only in 
recent years, and provide a good 
example of the point I am trying 
to make. Fifteenth Century laws 
did not promote the useful arts 
and offered no incentive to men 
and women like Leonardo to make 
their discoveries public. 

Now, I have a little more 
background to give you before I 
get into my subject entitled 
"Personal Computing and the Patent 
System," a subject I happily 
approach from my perspective not 
only as a practicing patent at- 
torney but also as an owner and 
user of a personal computer. 

I am only going to mention 
copyright peripherally because 
another attorney interested in 
personal computing, Ken Widelitz 
from Los Angeles, is giving an 
excellent presentation on that 
subject, and each of us has pro- 
mised not to steal the other's 
thunder, so to speak. So, for 
information on copyright I refer 
you directly to Ken's presenta- 
tion. 

It is my thesis that the 
encouragement which our Patent 
System has given countless thou- 
sands of inventors has made per- 
sonal computing possible. A little 
bit more history, and then we will 
define patents, explain how they 



WEST COAST COMPUTER FAIRE 



105 



BOX 1579, PALO ALTO CA 94302 



are obtained and used and touch upon 
the dilemma confronting us as to 
patent protection of software. 

The Telephone Grandparent 

More than one hundred years 
ago in 1876, Alexander Graham Bell 
invented the telephone and secured 
a patent on it. 3 Since that time, 
the telephone has grown to be an 
absolute necessity of modern 
life and it is not surprising to 
learn that today the telephone 
company, AT&T, has more U.S. Pat- 
ents currently in force than any 
other single entity, approximately 
ten thousand patents, 4 covering 
everything from plastic materials 
used in construction of home 
instruments to fiber optics, 
to patents describing highly 
automated, complex switching equip- 
ment that makes direct distance 
dialing a reality. And, it is this 
latter technology that is in my 
opinion one of the two grandparents 
of personal computing. You see, 
forty years ago, the telephone 
company had an acute need for a 
new theoretical approach to the 
design of automatic long distance 
dialing equipment. It was a bril- 
liant Bell Telephone engineer, C.E. 
Shannon, who, in 1937, and fortu- 
nately for all of us interested in 
computers, recognized the potential 
of the work of the Nineteenth 
Century English philosopher George 

...Boole, and. developed from BopJLe '..s 

works what we now call boolean 
algebra — an analytical tool for 
electrical circuits. 5 (You know: 
boolean algebra is the algebra of 
the binary number system, the base 
two, on-off number system, a 
system understood and utilized by 
our personal computers . ) 

Curiously, or perhaps not so, 
the telephone company sired the 
other grandparent of personal 
computing. While some of the Bell 
Telephone laboratory scientists 
were hard at work applying boolean 
algebra to long distance switching 
problems, three other billiant 
scientists at Bell Labs, Bardeen, 
Brittain and Schockley, were invent- 
ing the transistor in 1946.6 i n a 
book published in the early 1950' s 
entitled Player Piano , author Kurt 
Vonnegut, Jr. futurized about a 
centralized national computer he 
called EPICAC of epic capability, 
installed in Carlesbad Caverns, 
New Mexico. 7 You see, to Vonnegut * s 

WEST COAST COMPUTER FAIRE 



prescient mind, it was a vacuum tube 
computer. Had he then known about 
the future of the transistor, 
Vonnegut ' s story might have been an 
even closer projection of what we 
have today. As written, Player 
Piano was an incredible insight 
into the future, including social 
dangers which might flow from the 
misuse of computer power. 

Because of the transistor, 
your personal computer in your home 
or office is potentially more power- 
ful than Vonnegut' s Carlsbad com- 
puter or any vacuum tube computers 
that could ever have been built. 
The transistor and all of its 
progeny are the subject of literally 
thousands of U.S. letters patent, 
granted to thousands of inventors 
who have so rapidly advanced our 
semiconductor technology, from 
point contact transistors, to 
junction transistors, to epitaxial 
transistors, to field effect devices, 
to low scale integration, TTL, medium 
scale, and now to what we probably 
inaccurately refer to as large 
scale integration, inaccurate in 
.that we are now pushing packing 
densities upwards with such patented 
technologies as V-groove^ and high 
resolution masking equipment. It 
probably will not be too long 
before we will see, for example, 
a single chip 64K bit random access 
memory device. Think about it — the 
possibilities that lie ahead. And, 
it has bu&n the disclosure s> in- patents 
that have provided inventors with 
the stepping stones of essential 
technical information which have marked 
the path that has led us to where we 
are today — that brings us here 
together at this Computer Faire. 
Now, hopefully, I have con- 
structed enough of a background or 
operating environment to make the 
subject of patents, if not interest- 
ing, which is my belief and goal, at 
least palatable. And with that, let's 
consider some definitions. 

Inventions and Patents Distinguished 

Let ' s begin by comparing and 
contrasting the terms invention and 
patent . For every patent there must 
be an invention, but it does not 
follow that there will be a patent 
granted for every invention. In 
a broad sense each of us in an in- 
ventor creating an invention when- 
ever, through exercise of our men- 
tality and skills, we devise some- 
thing new. The dictionary defines 

106 BOX 1 579, PALO ALTO CA 94302 



invention as "a device, contrivance, 
or process originated after study 
and experiment." Another defini- 
tion worthy of note accompanies 
the word "invent": "to produce 
something useful for the first time 
through the use of the imagination 
or of ingenious thinking and experi- 
ment, such as a new machine." Even 
in the popular definition of inven- 
tion we find the element of novelty, 
that is, an invention must be some- 
thing new or novel. 

Before a patent may be granted 
under our U.S. patent laws, another 
essential ingredient must be pre- 
sent: "unobviousness," a word of 
art which, while easily explanable, 
is somewhat difficult to apply in 
practice. It is said that a patent 
will not be granted unless the inven- 
tion is one which is not obvious 
to a person having ordinary skill in 
the particular technology to which the 
invention pertains. Let's apply this 
test by an example. 

Suppose the invention is a new 
design for a microcomputer utilizing 
a bidirectional data bus for communi- 
cation between central processing 
and memory. Let's further assume 
that the design is truly novel, that 
is, that no one has ever made a 
microcomputer that looks just like 
this one. Let's also assume that 
the person of ordinary skill is a 
graduate electrical engineer of 
average skill and five years ex- 
perience in the design of electronic 
digital computer systems. Please note 
that my assumption as to the level 
of skill is purely arbitrary and not 
to be relied upon outside this illus- 
tration. * 

Now, let's put this hypotheti- 
cal engineer of ordinary skill in a 
laboratory. On the walls of the lab, 
let's tack up the closest prior art 
references we can find which describe 
similar computer systems. Now comes 
the test: if our mythical engineer 
is able to synthesize our new inven- 
tion from a combination of these ref- 
erences with his ordinary engineering 
skill, then the invention is not 
patentable. It is said to be "obvious" 
or too obvious to merit a patent. On 
the other hand, if the engineer cannot 
synthesize the invention from the 
references, then a patent should be 
obtainable. So we see that the sub- 
ject matter of a patent is a patent - 
able invention. 



Patents are issued to inventors. 
Since patents are intangible personal 
property, they may be transferred, 
licensed to and/or owned by a party 
other than the inventor. This is 
often the case where engineers are 
hired by companies to make developments 
and innovations, and some turn out 
to be patentable — in this situa- 
tion the employer usually owns the 
invention, particularly if there is 
a written employment agreement which 
says so. Where inventions are made 
outside the scope of employment, usu- 
ally the inventor owns the invention, 
although an employer may be able to 
claim a limited "shop right" in the 
invention if its time and/or resources 
were used by the inventor in making 
his or her invention. This is a 
tricky area, and it is not safe to 
suppose that there are clear cut 
rules or results. There are a lot 
of lawsuits filed in this area, 
particularly in the case of so-called 
"spin-offs" where a group of employees 
leave together and set up their own 
competing company. 

The duration of a patent is 17 
years from the date of issuance, 
non-renewable. The average time 
today for the examination of pat- 
ents is approximately 19 months 
from the date of filing to final 
disposition, 9 either issuance of 
a patent, abandonment of the appli- 
cation, or appeal. Currently there 
are approximately 1265 patent ex- 
aminers at the Patent Office in 
Washington, 10 and each has at least 
a technical background, with some 
of them also being trained in the 
law. These Patent Office examiners 
administer the patent laws on a day 
to day basis. An applicant unsatis- 
fied with an examiner's negative 
action has appellate remedies, first 
to the Board of Appeals in the Patent 
Office, and then if still unsatisfied, 
to the Court of Customs and Patent 
Appeals, a five judge federal court 
sitting in Washington, D.C. 

There is only one patent office 
in the United States because it 
is an exclusive activity of the 
federal government. 

States do not issue patents, 
although this has not always been 
true, and Massachusetts was the 
first to grant a patent in colonial 
days. In 1641 one Samuel Winslow 
was granted a ten year exclusive 
right by Massachusetts covering 



WEST COAST COMPUTER FAIRE 



107 



BOX 1579, PALO ALTO CA 94302 



his particular process for making 
salt. U.S. Patent No. 1 was issued 
to a Philadelphian on April 10, 
1790 for his apparatus and process 
for making potash and pearl ash. 
U.S. Patent No. 4,000,000 was is- 
sued on December 28, 1976 to a man 
from Las Vegas for a process of 
recycling asphalt-aggregate com- 
positions. Well over 1000 U.S. pat- 
ents are issued every Tuesday, fifty- 
two weeks of the year. In 1976, 80,735 
U.S. patents were issued, and in the 
same year 109,227 new applications 
were filed, which suggests that almost 
three fourths of the total applications 
filed resulted in issued patents. 

A patent application today 
requires a minimum $65.00 filing fee, 
and if issued as a patent, a minimum 
issue fee of $112.00. These fees 
are paid to the Patent Office in 
accordance with federal law. They 
are above and beyond attorney's 
fees and charges for such things 
as making the required drawings. 

Contents of a Patent 

Before I summarize what has 
to go into a patent, let me tell 
you the theory behind patent dis- 
closures. It is like a bargain or 
deal, a contract between the inven- 
tor and the people represented by 
the federal government. The inven- 
tor gives up a full and complete dis- 
closure of his invention — it is no 
longer a secret — with sufficient 
details to enable a person skilled "in 
the particular technology not 
only to make the invention but also 
to make it work and use it for its 
intended purpose. In exchange for 
this disclosure, the govern- 
ment gives the inventor a patent 
for 17 years. 

We will talk about the rights 
that a patent grant conveys in a 
moment, but let's first briefly 
mention the four requisites of a 
patent application: a specifica- 
tion, an oath or declaration of 
the inventor, drawings when neces- 
sary, and the prescribed filing fee, 
which we have already mentioned. 

The specification, which is 
the required written disclosure of 
the invention, has several parts which 
I will list: title, abstract of 
the disclosure, background of the 
invention, a summary of the inven- 
tion, brief description of the draw- 
ings, detailed description of a pre- 
ferred physical embodiment of the in- 



vention, and last, but certainly 
not least, the patent claims, 
which define in typically stilted 
yet very precise language the 
boundaries of the invention, just 
like legal descriptions in land deeds 
describe the boundaries of the real 
property conveyed thereby. 

When an application ripens into 
a patent, there is the grant it- 
self, and the document looks im- 
pressive, with blue ribbons and 
a red seal. 

Enough of theory, let's con- 
sider an exemplary patent, one I 
feel is appropriate for this 
audience. It is U.S. Patent No. 
3,821,715 which issued on June 28, 
1974 and is owned by the Intel 
Corporation. This patent describes 
and claims a general purpose digital 
computer formed out of large 
scale integrated circuit chips: 
one chip being a central proces- 
sing unit (CPU) , the second a 
random access memory (RAM) , and the 
third a read-only memory (ROM) . 
Here now is the front page of the 
specification which includes the 
title: MEMORY SYSTEM FOR A MULTI- 
CHIP DIGITAL COMPUTER, names and 
cities of residence of the three 
co-inventors, Intel as the owner or 
assignee, the prior art references 
cited by the Examiner, an abstract 
summarizing the invention, and one 
of the figures of the drawing, a 
figure which is supposed to be 
most representative of the overall 
invention. 



United Slates Patent 

HuK, Jr. rt al. 



ini 3,821,715 
l«l June 28, I974 



|M| mfmorv syvit m nm a milti-chip 

DHilTAI.CDMI'UltK- 
|75| Inventory Martian M«ard IMI. Jr., S:.nta 
Clara. Sbfriry Mm*. Sunnv* Jo; 
Fedrrica rasrfa. Cupertino, all ■* 
CM. 

|T1| Altitun: Inttl ftrponlkKuSunta Clara. Calif. 
|22| Filed: Un.21.fm 
|2I| Appl No: J254M 

1 52) US. 0..... 340/172.5,34071 73 R, 34C/I73 SP. 
J07/2JR 

1ST | lot. CL 00*1 13/00. Gl Ic 1 1/44 

|SS| Field «f Search 340/173 5, 173 SP, 173 R; 

307/238, 279 



1*1 . 

i.ttosm 
3XIJII 
3X0.061 
3 jU 1.763 


References Ctod 
UNITED STATES PATENTS 




2/1972 Cncchictal 

7/1972 AilubHal 

1/1972 Mcxtettal. 


307/2 J«X 
. 340/173 R 
. 340/173 R 


3,702.911 
3.719.932 


11/1973 Hancyelal _ 

3/1973 Cappos _ 


- 340/172.3 
. 340/173 R 



3.73l.3«« 3/1971 Del .VMII7J % 

3.731.U.I J/1973 HrjuvM VUVI73R 

3.7S7JW*. VIV1J Cum.-. 3«»l7:j 

1,7*1.7 J 1 WIV73 Hcanuhil «l A 3WI12 i 

OTUF.K ruil ICATK>NS 
Schucnrnnnn. "Compuur CiwlroT in IBM Technical 
Drrclntwv- Hulk-tin. Viil 14, No. 12, Xla> 1472; pp. 
3794-37V5. 



-Paul J. lfcnon 
AtshkM EMmntr— Mclvin H. Chapnick 
AUamcj. Agent, or Firm— Spcmlcy. Horn & Lainiu 

|57| ABSTRACT 

A general purpose digital computer which comprises 1 
plurality of mclnl-oxidc-scin'condiictor (MOS) chips. 
Random-acresvmemorics (KAM) and rcad-only- 
memorics (ROM) used as pan of the computer are 
coupled to common N-Jircciional data huscs to a cen- 
tral processing unit (CPU) with each memory includ- 
ing dwJrcf, circuitry to determine »h;ch of the plu- 
rality of memory chips is being addressed by the CPU. 
The computer is fabricated using chips mounted on 
standard 16 pin dual in-line packages allowing addi- 
tional memory chips to be added to the computer. 
17 Cbims, 5 Dra«te„' ~ ■., 



WEST COAST COMPUTER FAIRE 



108 



BOX 1579, PALO ALTO CA 94302 




There are five drawings in 
this patent. In a case such as 
this, drawings are required and 
must illustrate every feature of 
the invention. The drawing on 
the front page, above, is actually 
Fig. 1 and is a general block 
diagram of the computer. The 
figure reproduced immediately 
below is Fig. 5, and is said to 
be a detail block diagram of a 
RAM chip. Since this invention 
concerns novel computer system 
architecture rather than circuit 
details, the invention is illus- 
trated entirely in block diagrams. 
Where the invention concerns novel 
circuitry, schematic circuit 
diagrams would probably be re- 
quired. Here now is Fig. 5. 




/**cs*wgJT 



Msa/Marxv 



-? 



&&&&/ Amw&as 



I 3 MU.7T/XS-t&? 



From this Fig. 5 drawing, you 
can appreciate that it depicts a 
four parallel bit, dynamic memory 
having a total array size of 256 
bits — a very simple device 
compared to the 4K and 16K devices 
now available or in late product 
development . 

There are two other illustra- , 
tions I want to give you. The next 
is the first page of printed speci- 
fication, and conveys the flavor of 
the language in which patent appli- 
cations are usually written. 
While the language is clear, it 
is technical. It does not read as 
easily or as interestingly as a 
Vonnegut novel, for example. 



3,821.715 






MEMORY SYSTFM KM A Ml LTU'HIP DHITAL 
COMPITFR 



BACKGROUND OF THI- IN\TNTK1N 

1. Field of the Invention 

The invention relates to the field of digital comput- 
ers. 

2. Prior Art 

Since their inception, digital computer applications in 
have evolved from calculations thrown data press- 
ing and into the area of control. In recent \earv unh 
the development of the so-called "mini computer. " ap- 
plications, particularly in the control area, have ereatly 
increased. Mini computers today arc used at the heart ) 5 
of many systems since they are more flexible, can be 
easily personalized for a particular application, can be 
•ore readily changed or updated than fixed lope de- 
sign systems, and. most s ; znifkantly. the cost ci such 
computers is much less than the cost of a targe general 20 
purpose digital computer. Unfortunately, the size and 
cost of even the smallest mini computers has limited 
their use to relatively large and costly systems. Because 
of this, many smaller systems are fabricated with com- 
plex hardwired logic circuits. 25 

The present invention provides a general purpose 
digital computer which may be fabricated for a cost 
considerably less than the cost of r.en the srr-iilesc 
mint-computers. As will be seen, the presently dis- 
closed computer can provide the same arithmetic con- 3° 
Crol and computing functions as a mini-computer with 
a few MOS chips with these chips being housed in stan- 
dard packages. With the presently disclosed computer. 
it is anticipated that entire new applications, untapped 
because of the cost of mini-computers, will become 35 
practical. These applications include control functions. 
such as numeric controls, elevator control, highway 
and rail traffic control, and process control. The dis- 
closed computer can be used as computer peripheral 
equipment to control displays. ke>noards. printers, ~*° 
readers, plotters and terminals. Other applications for 
the presently disclosed system include computing sys- 
tems and countless other applications within the fields 
of transportation, automotive uses, medical electronics 
and testing systems. 4S 

SUMMARY OF THE INVENTION 

A general purpose digital computer which compricss 
a plurality of separate MOS chips is described. The 
chips are interconnected by a number of lines, includ- 
ing four bi-directional data bus lines. One chip includes 
a central processing unit that is coupled by the bi- 
directional lines to a plurality of memory chips which 
include random-accevs-memories (RAM) and read- 
only-memories (ROM). The ROMs are used to store 
the computer instructions and other data. A plurality ot 
separate RAMv and. ROMs may be added to -tiie bi- 
directional lines. The memory chips each include de- 
coding circuitry for recognizing a predetermined code. „. 
thus permitting the central processing unit to address 
a single one of the plurality of memory chips even 
though all the memory chips arc coupled to the com- 
mon data bus lines In the presently preferred embodi- 
ment.eachofthechipsare mounted on standard 16pm ,, 
dual in-line packages :ind input and output information 
to the computer is read in thiough and read out from 
terminals on the memory chips. 



BRlFF DESCRIPTION OF THE DRAWINGS 

FKj. 1 is a general Mock di.icr.im of the disclose.: 
computer. It illustrates the cemrd privessmg unit. * 
angle RAM and a single ROM 

f-tU. 2 is a graph illustrating a **rzle mMruriion cycle 
of the computer and is used pnirarily to describe the 
manner in which the memories cctnmunic^;e with the 
central processing unit. 

FKJ. 3 is a hk«ek digram illustr^nig the inierconncc 
turns between the central processing unit and a plural- 
k> of memory chips including ROMs .:;id K \Ms. 

MG. 4 is a detail block diagrar: illustrative a single 
ROM such as the ROMs illustrate in FIG 3. 

FIG. 5 is a detail Nock diagram ci a single RAM such 
as the RAMs illustrated in FIG. 3. 

DETAILED DESCRIPRON OF THE IN\ ENTION 
Referring first to FIG. 1, a corrsuter bum in accor- 
dance with the present invention a illustrated which in- 
cludes a central processing unit or central processor 
10, a random-access-memory (RAM) 35 and a read- 
only-memory (ROM) 30. In the presently preferrej 
embodiment, four bi-directional cita bus lines 20, 21. 
22 and 23 arc utilized to comrrunicate lt formation 
from the processor 10 to the memories and also tc 
communicate information from -ic memories to the 
processor. Infcrma'.io^ may be re^J Iron the computer 
on lines 56a. 56/j. 56c and 56rf and informaiior: may be 
read into or from the computer on the ir,put;outpu: 
lines 57a, 576. 57c and S7d. As will be explained ra 
greater detail, the central processing unit or processor 
10, the ROM 30 and the RAM 35. are eacn fabricated 
on separate MOS chips utilizing MOS technology anc 
are interconnected hy the various lines illustrated, in- 
cluding the common data bus lines 20, 21, 22 and 23. 
These bus lines may be fabricated on a priced circuit 
board along with lines 62, 63, 64, 65. 33 ar.d 51. and 
then connected to the processor 10 and the memories 
30 and 35 v-here appropriate, ir. ;he prt^ently pre- 
ferred embodiment the processor 10 and the memories 
30 and 35 are packaged in dual in-line 16 pin packages 
as is commonly used in the semiconductor industry 
and, as will be seen, the pins on each parage ha'.e 
been utilized such that the central process.ng unit is 
able to communicate with the memories and the entire 
computer is able to communicate througn the port* 
provided on the memories with t-temal circuit rv 

While in FIG. 1 only a single ROM is illustrated, as 
will be explained in detail, numerous ROMs may be uti- 
lized and may be coupled to the common da:a bus linn 
20, 21, 22 and 23. Additionally, a plurality cf RAMv 
may be utilized and these memory would likewise be 
coupled to the corrmon data bus iines 20, 21. 22 and 
23. The central processor 10, as oo the memories, te- 
ceiie complementary timing signals which may be ex- 
ternally generated, on leads 62 and 63 identified as <£, 
and 100 t . respectively, and illustrated :n FKj. 2 as sig- 
nals 66 and 67. Processor 10, in sedition to developing 
other signals, develops * synchronization signal which 
comprises a pa\\c ceneraied every eight periods of the 
signals 4>\ and <fr-. I his lynchror.i/ation pu.se is illus- 
trated as signal 6H in FIG. 2 and is communicated from 
the processor 10 M the various RAM* and ROMs uti- 
lised in the computer on k*yd 64. The central processor 
also generates a ROM control signal which is communi- 
cated to the ROMs utilized in the computer via lead 33 



WEST COAST COMPUTER FAIRE 



109 



BOX 1579. PALO ALTO CA 94302 



45 



50 



Finally, I have included claim 
1 of the patent below so that you 
see how precisely claims are 
written. The claims are the heart 
of any patent and they are drafted 
to be broad enough to cover the 
invention adequately, but not so 
broad as to be invalid for attempting 
to cover the prior art. Here is 
claim 1: 

We claim: 
35 1. A general purpose digital computer comprising: 

a central processor disposed on a first semiconductor 
chip; 

a plurality of bidirectional data bus lines; 

at least a separate first and second semiconductor 
4() memory chip each dcfiiilng a memory and each in- 
cluding a chip decoding circuit for recognizing it 
different predetermined code on said bidirectional 
data bus lines and for activating a portion of said 
memory upon receipt of said predetermined code, 
said data bus lines interconnecting said processor 
and said first and second memory chips for com- 
municating said different predetermined codes 
from sai.1 processor to at least one of said first and 
second memory chips and for communicating data 
signals for one of said first and second memory 
chips to said processor; 

whereby said processor may communicate signals to 
said first and second memory chips and said decod- 
, , ing circuits shall determine which memory is being 
addressed. 

If you have taken the time to read 
claim 1, you will note that it is 
one long, single sentence which first 
describes structural relationships 
and ends with the desired functional 
result. The subject of patent 
claims leads directly, I think, 
to the subject of patent rights. 

Patent Protection 

In general concept, a patent 
protects the idea of the invention, 
however that idea may be expressed. 
This protection is broader than 
that obtainable under the copyright 
laws which only provide a remedy 
against copying the particular 
expression of an idea. While pat- 
ents protect inventions and copy- 
rights protect expressions of 
ideas, there is no prohibition 
that in some circumstances a pat- 
ent as well as a copyright could 
be claimed for complementary 
aspects of the same subject matter. 
Usually, however, that which is 
patentable is not copyrightable, 
and conversely so. 

A patent is distinct from a 
trade secret, in that the subject 
matter of the patent is known be- 
caupp it is published when the patent 
is issued, whereas a trade secret 
must truly be kept as a secret to be 
protected. Also, a patent protects 



the inventor against later inventors 
who arrive at the same invention throug 
independent effort. Trade secret pro- 
tection may not be claimed against a 
third party who discovers the secret 
honestly and independently of the 
owner of the trade secret. A good 
example of a trade secret is the 
Coca-Cola syrup formula. Anything 
that can be reverse engineered is 
not a suitable subject for trade 
secret protection. Patent applica- 
tions are kept strictly confidential 
by the Patent Office before issuance, 
and are not disclosed if abandoned. 
Therefore, the subject matter of 
a patent could be protected as a trade 
secret before the patent issues. 

A patent grants to its owner a 
right of exclusion: that is, the 
right to exclude others from making, 
using or selling the invention during 
the life of the patent. This is a 
negative right. It is not the right 
to make, use or sell the invention 
claimed in the patent. Here is an 
illustration: in claim 1 reproduced 
above, the language calls for "a 
central processor disposed on a 
first semiconductor chip." Now, 
it is probable that one cannot 
"dispose" (that means "make") a 
CPU on a semiconductor chip without 
infringing patents covering the 
fabrication of large scale inte- 
grated circuits. So, in order to 
make a single chip CPU, one would have 
to be sure that patents covering chip 
--fabrication were not being inf ringed: - 
or more likely one become licensed 
under such patents to avoid any claims 
of infringement. Another reason 
that the patent grant is a right 
of exclusion is that in some situa- 
tions, other laws or public policy 
prohibit the manufacture or use of the 
invention — examples might be cycla- 
mate artificial sweeteners, and 
refined cocaine. 

The patent grant extends through- 
out the United States and is enforced 
by a suit for patent infringement 
in federal district court. For 
foreign protection, a patent must 
be obtained or confirmed in each 
country, which can be an expensive 
proposition. I cannot possibly 
cover the subject of foreign patents 
in the time allotted, other than simply 
to mention that whole area as a 
separate problem that has to be 
considered. 



WEST COAST COMPUTER FAIRE 



110 



BOX 1579, PALO ALTO CA 94302 



Time for Filing Application 

A patent application may be 
applied for at any time, subject 
to some highly technical, but 
important exceptions. The appli- 
cation must be filed within one 
year of being patented or described 
in a publication anywhere through- 
out the world, and within one 
year of first being publicly used 
or on sale in the United States. 
For inventions made in the United 
States, foreign applications may 
not be filed without a U.S. Govern- 
ment license or awaiting six months 
after first filing a U.S. Patent 
application. Usually, it is wisest 
to file a patent application as soon 
as the invention is completed. An 
invention is deemed complete when 
it is either physically made and used 
— called an actual reduction to 
practice, or a patent application 
is filed with a full disclosure of 
how to make and use the invention — 
called a constructive reduction to 
practice. 

I cannot overemphasize the need 
to keep adequate notes of inventive 
ideas when the invention is first 
conceived. A bound notebook is ideal, 
and the entry ought to include a 
witness* name and date of reading 
and understanding the invention. 
Sometimes it is crucial to have such 
records when the same invention is 
made by two independent workers, 
and it becomes necessary to prove 
who was first. In any event, a 
policy of keeping an invention note- 
book is a must for any serious inven- 
tor. 

Patent Searching 

Before an inventor files a 
patent application it is usually 
wise to make a patentability 
search to see if there are prior 
patents or other references which 
disclose or clearly suggest the 
invention. Most patent searches 
are made in the public search 
library maintained by the U.S. 
Patent Office in the suburbs of 
Washington, D.C. A number of public 
libraries around the country main- 
tain collections of U.S. patents 
as well as some classification 
information. In this geographical 
area, the Sunnyvale public library 
maintains copies of U.S. patents 
issued since about 1960. It is 
possible for inventors to make 



searches themselves in facilities 
like the Sunnyvale Patent Library, 
but the work is arduous, and the 
results are generally far less 
reliable than if the search were 
maae by professional searcher in 
the Patent Office search room. 
Patent attorneys maintain close 
ties with searchers in Washington, 
and patent attorneys may be located 
by looking in the yellow pages 
under "Patent Lawyers" which is 
a separate classification from 
attorneys in general. 

Patentable Subject Matter 

Perhaps you have noticed that 
I have not yet told you what is 
patentable and what is not. This 
has been intentional. I have 
deferred that topic until now 
because it leads us right into 
computer programs and patentability, 
my last topic. 

Patents are supposed to promote 
the useful arts. Therefore, patent- 
able subject matter must be useful, 
that is, capable of being used for 
some purpose or function. An 
abstract idea, such as a machine 
for generating the sound of one 
hand clapping, would not be useful. 
So also, perpetual motion machines 
are said not to meet the utility 
requirement. Anything that simply 
will not work, that purports to 
defy the laws of physics or chemistry 
may run afoul of the utility 
requirement . 

Assuming that the subject 
matter is new and useful, it must 
fall within one of the four cate- 
gories of process, machine, article 
of manufacture or composition of 
matter . 

Process means method and pat- 
ents for processes may be concerned 
with methods for making chemicals, 
forming articles, and making measure- 
ments or calculations with electrical 
signals. 

The difference between a 
machine and an article of manufacture 
is that a machine is said to have an 
inherent law of internal operation 
whereas an article does not. 
Another claimed distinction is that 
a machine has moving parts whereas 
an article does not, but this 
second criterion breaks down with 
personal computers which have 
sophisticated rules of internal 
operation but no moving parts 



WEST COAST COMPUTER FA1RE 



ill 



BOX 1579. PALO ALTO CA 94302 



(except perhaps the cooling fan 
for the power transformer) . 

A composition includes mix- 
tures of matter and also compounds. 
Chemical patent applications are 
subject to special rules and are 
drafted a little differently than 
are mechanical and electrical 
applications. There is a great 
deal of overlap in such areas of 
electrochemistry as the process 
of fabricating large scale integrated 
circuits on monolithic silicon 
wafers. 

So the four classes of patent- 
able subject matter are process, 
machine, article and compositions 
of matter. Here are some subjects 
that have been held not to be 
patentable: mere arrangement of 
printed matter, articles naturally 
occurring which are unaltered, 
methods of doing business and 
accounting; and, of most import- 
ance to us, the last one is scien- 
tific principles, including 
mathematics and algorithms, which 
brings me directly and inescapably 
to the patentability of computer 
programs . 

Patentability of Computer Programs 

Pure mathematics has tradi- 
tionally been characterized as a 
part of the liberal arts and 
philosophy. It has been held by 
our U.S. Supreme Court 11 that a 
pure mathematical formula or al- 
gorithm is not patentable because 
a patent would wholly pre-empt the 
mathematical formula. In practical 
effect the patent would cover the 
algorithm itself, and deprive all 
but the patent owner of the right 
to apply the algorithm to any 
problem in any technology. In the 
case to which I refer the algorithm 
was a pure algorithm; it had to 
do with the conversion of binary 
coded decimal numbers into pure 
binary numbers. Its application 
was said to be entirely abstract, 
it operated only upon numbers per 
se and was not applied to any 
physical environment or phenomenon. 
This case, Gottschalk v. Benson , 
decided in 1972, has been interpreted 
by lower courts as well as commentators 
as being a very limited decision — 
which is that computer programs 
involving algorithms which do nothing 
more than process numbers without 
any relationship to or impact 
upon the physical world, are not 



patentable. On the other hand, 
the Patent Office has interpreted 
this case much more broadly. The 
present Patent Office position 
appears to be that if the formula or 
algorithm is the only thing new or 
novel, then what is involved is a 
non-patentable mental step, even 
though the algorithm is claimed 
to operate upon something in the 
physical universe. The analogy 
that the Patent Office used in 
recent papers filed with the 
United States Supreme Court 12 
in urging it to review a lower 
court's decision was as follows: 
"It is as if respondent 
[patent applicant] were 
trying to patent the Pythagorean 
Theorem as a part of a method, 
by adding a final step that 
suggested applying the solution 
of the equation to surveying. 
Such a last step is not an 
integral part of a new inven- 
tion, but rather the non- 
inventive application of a 
mathematical result to existing 
technology; that fact is not 
changed by the facile device 
of so drafting a claim that 
it places an abstract mathe- 
matical algorithm within a 
recitation of steps performing 
conventional , existing technology . " 
So let me summarize my personal 
opinion as to where we appear to be 
at the time of the writing of this 
paper (early January 1978) : (1) if 
the only thing that is novel and 
unobvious is an abstract algorithm 
that is not applicable to the physi- 
cal world — no patent. (2) If the 
novel algorithm is applied to the 
physical world by operating within a 
standard general purpose computer, the 
Patent Office will likely hold that 
it is unpatentable, but the Court of 
Customs and Patent Appeals might re- 
verse and grant the patent. (3) If 
the novel software operates in con- 
junction with novel hardware, then 
the Patent Office may then grant a 
patent, assuming other conditions 
for patentability are met. 

One argument that is heard every 
so often is that a unique computer 
program defines a unique computer 
structure when loaded into the compu- 
ter 's program memory. And, literally 
this is true. However, if this were 
the case, then the program which con- 
verted BCD to pure binary would have 
been held patentable (which it was 



WEST COAST COMPUTER FAIRE 



112 



BOX 1579, PALO ALTO CA 94302 



not in the Benson case) because the 
computer which that program defined 
would have been unique. So, it 
seems safer to look to physical 
contact, manipulation or impact as 
an indicator of patentability for 
computer programs, at least at this 
point. 

From my experience and observa- 
tions, it is my opinion that the 
chances of obtaining a patent involv- 
ing a program are enhanced if one pur- 
sures a strategy of emphasizing the 
hardware and physical contact 
aspects of the invention, if pos- 
sible. For example, if the pro- 
gram resides in the read only memory 
as firmware, then one might claim 
a read only memory arranged to define 
the novel algorithm — this way you 
claim physical structure, not a 
mental step, and hopefully maybe 
you can avoid a rejection by the 
examiner that the claim is non- 
patentable subject matter. 

One cannot mention protection 
of software without noting that it 
is a subject matter which is copy- 
rightable. Whether the copyright 
law provides adequate protection is 
a matter of great national debate. 13 
Remember, we have already noted that 
copyright only protects against copy- 
ing of the expression of an idea, not 
the idea itself. For more informa- 
tion regarding copyrightability of 
software programs, I refer you again 
to Ken Widelitz ' presentation. 14 

Conclusion 

In presenting this paper I 
am reminded of a definition I once 
heard for an expert. It has been 
said that an expert is like the 
bottom half of a double boiler — 
it puts out all the strain, but it 
really does not know what's cooking. 
Those of us who work with patents 
sometimes find ourselves generating 
a lot of hot air without really 
knowing whether those warm air currents 
have any utility. I hope you have 
profited from this presentation. 

Today we have discussed the 
need for our patent and copyright 
laws to foster and promote the pro- 
gress of science and useful arts by 
protecting authors and inventors in 
giving them exclusive rights to 
their works for limited periods of 
time. We have noted that for inven- 
tions to be patentable they must be not 
only novel, but also unobvious to the 
ordinarily skilled worker in the 

WEST COAST COMPUTER FAIRE 



technology. We have noted that a 
patent requires the* inventor to 
exchange a full disclosure of the 
invention in exchange. for the 17 
year exclusive right to exclude 
others from making, selling or using 
the invention, as claimed. We have 
illustrated the disclosure require- 
ment by looking at parts of Intel's 
patent for a four bit bidirectional 
data bus microcomputer. And, finally, 
we b-^ve noted the problems confronting 
us in the troublesome area of the 
patentability of software. 

It has been my experience that 
electrical engineers and technicians 
tend to be skeptical about patents 
for such things as computers. I 
often hear, well, you can't patent 
Ohm's law, and that, of course, is 
true. But the development of ele- 
gant unobvious hardware and hardware- 
software combinations may be appro- 
priate subjects for patents. Here- 
tofore, the personal computer industry 
as a fledgling industry has not been 
faced with the need to deal with 
patents and the patent system. With 
the popular press projecting annual 
sales in the personal computing 
industry to reach 1.5 billion dol- 
lars by 198 5, I 5 it is apparent that 
this industry will come into contact 
with patents on a more frequent 
basis. 

Let me leave you with some 
figures that I think prove my point. 
Intel, for example, has about 30 com- 
puter related patents, Hewlett- 
Packard has about 200 patents on 
computer/calculators, and the IBM 
Corporation has over 9,000 U.S. 
patents now in force and effect, 
covering a broad spectrum of sub- 
jects from typewriter ink composi- 
tions to large scale computer 
architectures .16 As a company grows 
in size, apparently so does its 
patent portfolio. 

We have just begun to glimpse 
the possibilities for personal com- 
puting. But what I am waiting for 
and would love to see invented, is 
a truly personal computer , one that 
interfaced directly with my brain. I 7 
Then, theoretically, I could perform 
complex mathematics, compose symphonies; 
translate languages and hopefully 
advance the state of humanity. This 
is one of my hopes and speculations 
for the future of personal computing 
and it is people like you that possibly 
will come up with an invention to bring 
it into reality. Thank you for your 
attention. 

113 BOX 1579, PALO ALTO CA 94302 



Foot >es 

-The Copyright Laws, Title 
17, United States Code; The Patent 
Laws, Title 35, United States Code 

2 Eureka! An Illustrated History 
of Inventions from the Wheel to the 
Computer , Holt, Rinehart & Winston 
(c) 1974, pp. 24, 39. 

3U.S. Pat. No. 174,465, 
issued March 7, 1876 to A.G. 
Bell. 

information kindly supplied by 
the Patent Department of AT&T. 

5 Burroughs Corporation, 
Digital Computer Principles , 2d. Ed. 
McGraw Hill, ^ 1969, page 94. 

Eureka 1 An Illustrated History 
of Inventions from the Wheel to the 
Computer , supra Fn 2, p. 231. 

TkT Vonnegut, Jr., Player P iano, 

Dell Ed., (c) 1952, pageTf. 

8See, e.g., U.S. Patent No. 
3,924,265, issued December 2, 1975 
to Rogers for "Low Capacitance V- 
Groove MOS NOR Gate and Method of 
Manufacture . " 

9 United States Patent Office, 
Office of Information Services. 
lOibid. 

ll Gottschalk, Acting Commis - 
sioner of Patents v. Ben son, 409 U.S. 
63 (1972). 

barker, Acting Commissioner 
of Patents v. Flook . No. 77-642, 
filed Nov. 2, 1977, Petition for 
Certiorari from In re Floo k, 559 F.2d 
21 (CCPA 1977). 



13The Report of the Software Sub- 
committee to the National Commission 
on New Technological Uses of Copyrighted 
Works, issued in June, 1977, opines 
that copyright is the most appropriate 
form of protection for software pro- 
grams and proposes changes to Section 
117 of the New Copyright Act. A 
dissent by John Hersey argued that 
since a computer program was only 
operable as part of a computing machine 
it did not belong in the category of 
copyrightable subject matter and 
proposed a new special law for the 
protection of software, a so-called 
Computer Software Protection Act, sug- 
gesting a 10 year period of protection 
for software. 

14 See Ken Widelitz * Legal/Busi- 
ness Forum column in the November 1977 
issue of KILOBAUD , Page 14. For an 
excellent legal discussion on the 
overall subject, see "Computer Program- 
ming and Patent Law," American Patent 
Law Association Quarterly Journal , Vol. 
V., No. 1, 1977. 

!5 u.s. News & World Report , Nov. 
21, 1977, page 77. 

16information kindly supplied by 
Patent departments of Intel, Hewlett- 
Packard and IBM, respectively. 

17prof. Carl Sagan suggests this 
in his currently popular book The Dra - 
gons of Eden, Speculations on the O ri- 
gins of Human Intelligence , Random 
House, 1977, page 205. 



WEST COAST COMPUTER FAIRE 



114 



BOX 1579, PALO ALTO CA 94302 



ABSTRACT 
uupyi lyni. dnG juitwafe; 

Some Philosophical and Practical Considerations 
by Kenneth S. Uidelitz, Attorney at Lav; 
10960 kilshire Boulevard, Suite 1504, Los Angeles, CA (2:13) 477-3067 



At the present time the National Commission on 
New Technological Uses of Copyrighted Works (CONTU) 
is working on a report which will recommend the Man- 
ner in which a Copyright Law should be modified in 
order to protect computer programs. The committee's 
latest report, issued in June, 1977 is available 
from CONTU, Washington, D. C. 2055b, telephone 
(£02) 557-0996. 

The latest CONTU report discusses the three 
currently available vehicles for protection of com- 
puter programs, namely, copyright, patent and trade 
secrecy. As the report states, "...copyright is 
designed to protect the expression of ideas while 
patent's purpose is to protect what are generally 
understood to be inventions -- in a sense the ideas 
themselves." Patents, on the other hand, protect in- 
ventions which must be useful, novel and not obvious 
with those familiar with the related technology. 
Trade secrecy involves the dissemination of informa- 
tion pursuant to contractual agreements by the terms 
of which the party receiving the information pro- 
mises not to reveal it to anyone else. 

Philosophically speaking, issues raised in dis- 
cussing whether software should be protected by co- 
pyright involvea the use of analogies in which the 
statement "computer programs or more or less like..." 
are made. The question becomes, is a computer pro- 
gram a writing and/or a mechanical 'device. Other 
"philosophical" issues are when is a copy of a com- 
puter program made? Uhen it is loaded into memory 
or when it is dumped onto tape or haru copy. Another 
issue involved is when is a program based on a pre- 
vious program a derivative work. That is, an author 
of a book written in English has the exclusive right 
to translate it into french (read BASIC for English, 
COBOL for french?) 

The Copyright Act of 1970 

The Copyright Act of 197C became effective Jan- 
uary 1, 1973. Section 117 of that Act specifically 
stated that it did not change the rights of an au- 



thor of a computer program as such rights 
existed under the old law. CONTU, in its 
report, recommendsa new Section 117. how- 
ever, many of the new provisions of the 
Copyright Act do currently effect computer 
programs. 

The new Copyright law makes the term 
of copyriglit equal to the life of the author 
plus fifty years. The new law also makes 
the concept of "publication" less important. 
The new law also defines when a work is 
"created", when a "copy" is made and what 
constitutes "a work made for hire." 

Under the Copyright Act an author has 
the right to do any of the following: (1) 
to reproduce the copyrighted work in copies; 
(2) to prepare deriva tig works based upon the 
copyrighted works; (3) to distribute copies 
of the copyrighted work to the public by 
sale or other transfer of ownership, or by 
rental, lease or lending. Each of these 
rights are independent of one another so 
that any one may be retained while any other 
is sold or transferred. 

The question as to what constitutes a 
derivative work is one of the toughest that 
computer programmers will face. It must 
first be understood that copyright protec- 
tion does not extend to any idea, procedure, 
process, method of operation or concept. 
Copyright protection extends only to the ex- 
pression of ideas, not the ideas themselves. 
Cf course, some ideas, concepts, procedures 
or processes are so basically fundamental 
that copyright does not protect an explana- 
tion cf them. For example, some sorting 
routines are so basic that they cannot be 
copyrighted. However, if a series of basic 
routines are put together so as to accom- 
plish a specific task, that program is 
subject to copyright. 

In order to obtain copyright prctec- 



copyright 1977 Kenneth S. Widelitz 
WEST COAST COMPUTER FAIRE 115 BOX 1579. PALO ALTO CA 94302 



tion, there are certain procedural technicalities. 
These are notice, deposit and registration, no- 
tice requirements are simple. They consist of a 
C in a circle, the words copyright or the abbrevi- 
ation copr. ; the year of the first publication and 
the name of the copyright owner (i.e., Copyright, 
1978, by Kenneth S. Widelitz.) rThere are rules 
relating to where the notice must appear, depend- 
ing upon the type of work to be copyrighted. The 
Copyright law also requires that materials which 
are copyrighted be deposited with the Library of 
Congress. There are exceptions if the Library of 
Congress does not desire specific material. Re- 
gistration with the Registrar of Copyrights is a 
prerequisite to the bringing of a law suit for 
the infringement of copyright. 

Another consideration is the Doctrine of Fair 
Use. Fair use embodies that notion that a rea- 
sonable portion of a copyrighted work may be re- 
produced without the permission of an author for 
a legitimate purpose. The doctrine is most often 
applied to teachers who have xeroxed materials 
for distribution to students for educational pur- 
poses. 



V 



WEST COAST COMPUTER FAIRE 116 BOX 1579. PALO ALTO CA 94302 



BECOMING A SUCCESSFUL WRITER ABOUT COMPUTERS 
Ted Lewis 

Every author of a successful book knows the essentia] ingredients of a 
"best seller", whether it be a "great American novel" or a book about computers. 

First, the author must have something to say. This concept is often over- 
looked by an anxious novice eager to get his/her words in print. Yet, unless 
there is value in your words, the book or article will be useless. In computing 
there are many ideas and concepts that need to be clearly and concisely stated. 
Unfortunately, books on computing tend to be re-hashes of the same old concepts 
and ideas inherited from the first 25 years of computing. The microprocessor 
revolution has changed many of the ideas and motivations in computing. It 5s 
this change that may prompt you to write. If" so, be sure to take a fresh and 
innovative approach. 

The second essential ingredient to good writing is style. Clearly vrritter. 
books are as valuable as clearly coded programs. Everyone has a unique style, 
but as authors we owe it to our readers to suppress nonsensical idiosyncrasies 
and "in" human. Perhaps one of the most difficult tasks for an author of 
computer books is to avoid use of mnemonics; clever "buzzwords", and trite 
phrases. 

Style also contributes to a book by forcing a structure on the writing. 
Chapters are the modules of a book; sections are subprocedures , and paragraphs 
are equivalent to control structures. Thus, a good book has a clean structure. 

Style also means the book is organized into a sequence of increasingly 
complex topics. Initially, a ground-level introduction is used to familiarize 
the reader with important concepts used later. Don't include material that is 
minor. Do include material that will help the reader understand later concepts. 



WEST COAST COMPUTER FA1RE 117 BOX 1 579. PALO ALTO CA 94302 



A final suggested ingredient in good writing is timing. A "good" book is 
not always a "good selling" book. The reason is timing. Computer books have a 
"life" of roughly 3 years. Furthermore, it may take 2 years to produce the book 
in the first place. This means the author must look into the future to see what 
will be viable and may be of interest to the future computing community before 
starting a new book. An author must be a prophet of things to come. 

Predicting the future of personal computing is almost impossible. Therefore, 
writing is a risky business. For example, two years ago a wise writer should 
have expected a decline in hit building, and a rise in turnkey business systems 
and disk files. Today, there are several trends leading to "successful" topics 
for authors of 1980 books. 

The foregoing suggests three fundamental concepts of writing a good book. 
There are many other aspects of writing not. covered here. p or example, the 
author-publisher relationship, how to locate a publisher, how to promote an idea, 
etc. All of these factors contribute to the success (or failure) of a writer. 

Nonetheless, the place to start a writing career is with 1) something of 
value to say 7 ~ 2) a polished style, and 3} a topic 2 years ahead of itself. 



WEST COAST COMPUTER FA1RE 118 BOX 1579, PALO ALTO CA 94302 



J 



WRITING A USER'S GUIDE 

Douglas J. Mecham 
Hughes Aircraft Company, P. O. Box 3310, Fullerton, California 92634 



Abstract 

Programmers write neat programs that they 
share with others; thus, there is a need to write 
useful user guides. From the user's standpoint he 
needs an easy and simple guideline to be success- 
ful. While this documentation task may seem 
difficult; the programmer writing the user's docu- 
mentation for his program can also be a success 
easily and simply. The easy and simple approach 
is to learn a few easy thought processes. This 
presentation deals with eight major considerations 
in writing the user's guide. 



Your use of microcomputers has revolu- 
tionized the world. No longer is a highly trained 
specialist required to use a computer. By virtue 
of your attendance at the Computer Faire you are 
sharing with others your experiences. These facts 
require you to communicate your ideas. How well 
do you do that? If you have to describe in writing 
how to use your neat program, how well do you 
communicate? The best idea in the world is not 
worth much unless it is communicated and used; 
in other words, your knowledge is worthless if it 
is not communicated; furthermore, your intelli- 
gence of that knowledge is not credited unless your 
ideas are used effectively. 

The reason we should be concerned about 
the details of documentation is because we need to 
communicate information in writing about our 
ideas. This is important now because this is the 
decade of the user. More people, non-computer 
oriented people, have direct access to computer 
systems. These users do not tolerate the way the 
system wants to operate but want to dictate to the 
system how they wish it to operate. Good user 
documentation is the key to effective use of a 
computer system. This paper will provide some 
useful ideas to generate good user documentation. 

To provide perspective of where user 
documentation fits consider the three parts of a 
computer system: 

Hardware 

Software 

Peopleware. 
It is within the category of Peopleware that docu- 
mentation falls. The objective of the user 
documentation is to break down the barrier between 
the real user and the computer system hardware 
and software. 



Written information is a personal thing 
specifically designed for particular situations; 
however, there are several aspects of it that can be 
identified. This paper discusses these aspects; in 
summary they are: 

WHO- -understand the user's thought process 
SIMPLICITY— keep it simple 
FORGIVENESS- -make recovery easy 
EXAMPLES --use plenty of meaningful 

examples 
DETAILS --sink the details 
RETRIEVAL- -provide easy access 
PERSPECTIVE— keep the user point of 

view at all times 
APPEARANCE --it must look nice to read 
well. 
Remember the primary objective of the user infor- 
mation is to make the user successful, easily and 
simply within his time/dollar constraints. End 
users are very impatient about time and money. 

Who 



Consider who the user /reader is. The 
usual frame of reference for a writer is his own 
thoughts but for a user document the frame of 
reference must be the user. You need to determine 
the user's psychological profile and understand his 
thought processes. This is not so difficult since 
you are well aware of how you think as a user of 
other peoples' software. The type of information 
presentation a user expects when reading a user 
document can be determined by choice of form, 
format, and vocabulary. 

First, look at what information the user 
needs to perform his task. The capabilities of the 
software should easily define the parameters in- 
volved. Not all the information may be required 
for all users so the user document must present 
different amounts of information to meet each 
individual's requirement to complete his task 
successfully. Certainly there is a minimum amount 
of information necessary; this of course is the 
simple path. Then there is an average amount of 
information required; this would be the normal path 
a user would follow. There are always those 
complex tasks that require the user to need the 
maximum amount of information. Aside from these 
different paths, the most necessary set of user 
information needed is when an error or problem 
occurs. 



WEST COAST COMPUTER FAIRE 



119 



BOX 1579. PALO ALTO CA 94302 



Second, once the different sets of informa- 
tion have been determined they must be ordered in 
some manner. This implies a sequence of events. 
Again, this determination is a function of what the 
user needs; that is, the sequence of events as the 
user perceives them. An easy way to determine 
the sequence of events is to ask yourself "What is 
the first element of information the user needs, " 
"what is the second element of information the user 
needs, " and so on. Do not fall into the trap of 
providing too much information on the account of 
"what if;" consider only the critical information 
necessary. The user does not want to wade through 
superfluous information. The user document is not 
a design specification document and as such the 
flow of information in the document is by user task, 
not by technical item commonality or logic. 

One of the user viewpoints often left out is 
describing what the user cannot do. Remember the 
user's perception of what he expects the software 
to do may not coincide with what the software can 
do. The user most likely will attempt to do what 
he thinks he can do with the software, or what he 
thinks he should be able to do with the software. 
Assume very little and leave little to the imagina- 
tion of the user. 

How ever you plan your approach to meet 
the above criteria you need to plan what information 
is needed, the information flow, and the information 
grouping. There is nothing that says that all 
information groups must be mutually exclusive; do 
not be afraid to replicate elements of information 
within several groups. The sequence is important 
to the user. The information should be in such a 
sequence to accommodate the novice or student 
(simple), the experienced user (average), and the 
computer systems nut (complex). 

Notice that the real information needs are 
based on what the user wa nt s, not on what you think 
he needs. It must be kept in mind that the user 
requires only that information necessary to get him 
to the next step to complete his task. An incredible 
erroneous concept in data processing is that user 
documents should define all their technical terms 
in the front of the document. Then. . . they expect 
the reader to remember and understand them for 
the duration. If you need to define a particular 
word then define it when you first use it in a mean- 
ingful context. Do not be afraid to redefine it later; 
most technical readers have a short memory so 
why make it difficult for them. 

For any good user document the first 
paragraph should indicate: 

Who should use the document, 

Why he would want to use the document, and 

How to use the document (conventions and 
organization). 
This way the user may readily find the information 
he requires without going through useless material. 
The user document is usually a reference type 
document, not a novel. 



Vocabulary is a sore point with data 
processing persons, or for that matter persons in 
any other technical field. The reason for this is 
because "it is obvious what a term means. " Un- 
fortunately, the reader cannot always rely on 
context to figure out the meaning of a word. Con- 
sider the home computer user or any other non- 
data processing professional coming in direct 
contact with the computer. The words chosen must 
not let him think he is getting "computerese" all 
over him. While some relish the acronym, jargon 
is always hard to keep straight. Why not use words 
that are easily recognizable by the user. Using a 
meta -language (a specially -defined translation 
language) is a NO-NO- -spell it out! 

Take, for example, the error message 
ILLEGAL or FAILURE and consider the psycholo- 
gical ramifications on a law-abiding successful 
business man. The psychological impact of a user 
touching the computer is great ! At first the user is 
afraid he will break something or "it" (the com- 
puter) will "do something" that will render htm less 
capable to carry on in his life. Or "it" will des- 
troy everything he has worked hard to achieve. 
The user may think the computer will violate his 
sense of goodness. One purpose of the user's 
document is to put the user at ease and dispel any 
such fears. Thus, the user's anthropomorphic 
sensibilities are alleviated. 

Simplicity 

The basic rule is KEEP IT SIMPLE ! 
Whether the user is a sophomore or holds a PhD 
his desire, or his ability, to read is small. All 
the user wants to do is get his task completed, 
simply and easily. Simplicity may be used at all 
levels of user documentation. Technical infor- 
mation tends to be complex, whether it ts or not. 
All too often numerous concepts and parameters 
are juggled before the user's eyes. A psychologist 
once told me that a person can generally only 
handle eight major items at once. 

A user may understand sophisticated 
vocabulary and complex concepts. But, each time 
a user's thought process must make a translation 
or complex transition the probability for loosing 
information or concepts is significantly high. 
What the user does not need is confusion. A sim- 
ple example of this are references to octal or hexi- 
decimal values instead of decimal values. As you 
will see, simplicity also takes into consideration 
who the user is. 

One technique to keep a user document 
simple is to take a "storybook" approach. That is, 
structure the information in a simple, straight- 
forward, step-by-step manner. When organizing 
the information choose a critical path for the user 
to get his task completed whether it is simple, 
average, or complex level. In order to meet the 
"storybook" criterion sentences need to be simple. 



WEST COAST COMPUTER FAIRE 



120 



BOX 1579. PALO ALTO CA 94302 



The "fog" factor of long sentences and large words 
requires education beyond most users and consi- 
derable translation. Remember that television is 
geared for the ten year old and it is a very 
successful communications media format. 

If you should leave out information by 
assuming that the user should know it, chances are 
you will introduce confusion. Why make the user 
think more than he has to; certainly user documen- 
tation is not an examination. Why make it difficult 
for even the most sophisticated user. 

Vocabulary plays a role in simplicity. To 
keep it simple use common words known to most 
readers. . .like the English language. Computerese 
and FORTRAN do not have commonly known voca- 
bularies. If you do use common words chances are 
you will relate to your reader and he will under- 
stand your concept. For instance, to explain data 
base concepts use school information for an 
example rather than nuclear power; most people can 
relate to information about schools. While there 
may be some particular vocabulary words required, 
minimize their number. Why should a user learn a 
whole new vocabulary just to do his simple task? 

Another method of simplicity is to make the 
wording tight (no extra verbage) but not terse. 
Leave out computer -oriented words. The five cent 
and ten cent words put together well are worth 
more than a fifty cent word that does not fit. When 
you choose the use of a particular word, be 
consistent and don't use'another word that means 
the same thing or almost the same thing. This is 
especially true when defining new terminology; 
leave the word variety to the novelists. Consis- 
tency makes simplicity. 

Forgiveness 

Naturally, if there is a way a mistake can be 
made the user will find it. This is easily done 
because the user performs his task the way his 
memory tells him to, not the way the computer 
memory wants him to. 

When there is a conflict the computer sys- 
tem should adapt to the user but this is usually not 
the case. Therefore, it is the user's manual that 
must make the computer system potable to the 
user's way of thinking, in the user's terms. Hope- 
fully the computer system will forgive the user and 
give him another chance. The user manual is for- 
giving by discussing alternatives should a problem 
surface, and by not leaving the user to guess what he 
should do. Computer software usually relies on 
the user manual to bail the user out of his problem 
and put him on the right road to performing his 
task. For example, just think of all the error 
numbers you have seen as a result of a problem. 
The user manual must define each error number 
by a clear indication of what happened, what the 
current situation is, and what to do about it. 
Both the computer system and user's 
document must allow for quick and easy recovery. 
Normally, you will waste more than 50% of your 
time guessing and testing your hypothesis as to 



why a problem occurred but a good user's docu- 
ment can often cut this effort in half. The 
vocabulary of the error messages must match the 
vocabulary of the user document discussion. 
Abbreviations and computerese are unwarranted. 

Be kind to the user for he has problems. 
The user cannot and does not want to distinguish 
between errors (specifications violated), need for 
document clarification, or design change require- 
ments. The user only wants to get his task done 
simply and easily. Unfortunately most vendors ask 
the user to make this judgement when he has a 
problem. 

Examples 

The first item the user looks for in a user 
document is an example. More specifically, an 
example that most nearly matches his task. Even 
when using the manual as a reference an example 
will often be needed. Thus plenty of examples in the 
user's document are most helpful. 

Since the user is going to reference the 
examples so often, several important characteristics 
should be noted. First, the sequence of events 
within an example must be very clear and you must 
distinguish between what the user does and what the 
computer /software does. To make the example 
understood provide an explanation of the sequence 
of events or results right along side. Since an 
explanation does not leave the reader guessing; 
be explicit, you know what you mean, so tell the 
reader. 

Examples should be simple, easy to follow, 
and consistent throughout the user document. 
Often times, considerable continuity may be 
achieved by creating several examples around the 
same topic matter. There is nothing wrong with 
duplicating examples or portions of examples. It 
is even desirable to build on a specific example 
duplicating a previous example to illustrate a 
sequence of events. This way the user can relate 
the different examples. Examples are made simple 
if the subjects are easily related to. For 
instance, if file records were discussed, the use 
of bank book accounting may be helpful since the 
reader can identify with it. 

There is no place for clever, funny, com- 
plex, or wierd examples. These types only cause 
confusion. Good examples represent the manner 
in which most users would use the system. 
Additionally, the examples described must have 
been tested and work. 

Finally, be careful of the symbology used in 
examples so the reader can distinguish between 
form, format, and literal requirements. For 
instance, italics are often used for a "type" of 
input such as name whereas upper case may in- 
dicate literal information as in the case of ZEP=. 
Specifying^ carriage return is difficult so a symbol 
such as (CR) might be used since there is no sym- 
bolic equivalent. Be careful of specifying literals/ 
strings in quote marks, not all systems expect the 
user to enter the quote marks with a string value. 



WEST COAST COMPUTER FAIRE 



121 



BOX 1579, PALO ALTO CA 94302 



For example, consider the message ENTER "YES" 
or "NO"? Should the user enter the quote marks 
too? If not, then leave them out. 

The more examples you put in your user 
document the better. 

Details 

The rule for detail description is to "sink" 
it. In other words, do not get deeply involved in 
beginning paragraphs of a user's document, save 
in-depth discussion for last. Usually the user 
needs only the straightforward simple information 
to perform his task. Included in "details" are 
complex and odd situations which are needed in a 
small percentage of tasks. If too much detail is 
required to perform the task, perhaps software 
redesign should be considered. 

In a user's document confront the user first 
with the easiest and most useful alternatives. Su^;h 
an approach will minimize room for user problems 
to develop. Once the user is a success with the 
simple approach he is ready for more detailed 
material. Be careful to mention how to use an 
item as well as just a description of the item. 
Bulky material such as tables or long lists should 
not clutter up the text. Since such information is 
rarely read from start to finish and used normally 
for reference, move it to an appendix. Besides, 
the appendix is easier to update than the middle of 
a document. 

How much detail should be put into a user 
document? Rules of thumb are: enough to assist 
the user in accomplishing "most" of his tasks and 
enough to solve "most" of the user problems. The 
detail material is where the user limitations, pit- 
falls, and idiosyncracies are discussed. The 
detaLLsare needed Qnly__after_ the ; user has become 
a success easily and simply at least once. 

Retrieval 



If information is useful the user must have 
easy access to it. The user document is primarily 
used for reference. Thus, when a user has an 
information need he thinks of an access point and 
looks for that point in the user's document. Again, 
what the user thinks may be different from your 
point of view so consider several access points to 
an element of information. 

The user most likely will choose a word or 
words related to the task he is doing. The user 
will not likely select a word related to design or 
organization of the software. The implication is 
not only to index the user document information 
by user task but to organize the document infor- 
mation by user task. 

An alphabetical index is mandator v in a 
user document of any size. Often a multiple level 
index is helpful so a user can reference a particular 
word as it is related in different contexts. Per- 
mutting words assists to cross reference material 
where the index item is more than one word. 
Likewise, there may be instances where pointers 



("see Also") to other information may be useful to 
a user tracking down information. Vocabulary 
plays an important role in retrieval since not all 
users and authors think of the same term to des- 
cribe a function or other item of information; 
thesaurus words are very helpful. 

When considering the structure of a user 
document, simple sentences, paragraphs, and 
item lists are easy to access as opposed to long 
paragraphical information. Furthermore, the lay- 
out can be extremely helpful for physically retrie- 
ving information. Some of the latter techniques 
include shading of key words or syntax forms, 
marking paragraphs with bullets/dots, drawing 
rectangles around important information, or using 
separate fonts such as italics or script as well as 
bold face type, underlining, simple indentations, 
and titles. 

Tabulation techniques can take the form of 
colored tabs with printing on them; such tab pages 
can have summary user information on them for 
easy access/reference. Simple inexpensive tabu- 
lation may be achieved by putting black marks at the 
edge of a page. Then when the edge of the docu- 
ment is titled the appropriate section is found using 
an index page in the front of the manual . 

The need for easy and quick retrieval of 
information in a user's document is mandatory 
since all technical materia] is referenced after 
being read. Not being able to easily and quickly 
find information accounts for a significant amount 
of a user's wasted time and frustration. The 
attitude "it's all there. . . somewhere" is not helpful. 
If a user has difficulty finding information he will 
seek other software or computer systems. 

Perspective 

Often points of "confusion develop when a 
user loses track of who is doing what, when, and 
where. For instance, when describing interactive 
dialog it is important to indicate when the user is 
to enter dialog and when the computer outputs 
dialog, i.e. who's turn is it. The relationship 
between several software functions can be lost 
through all the detail in each, thus a summary of 
the functions showing or describing their relation- 
ship is helpful to a user. 

One technique to keep the perspective is to 
ease the user from a more global concept and scope 
in on the particular item to be discussed. Other 
techniques include diagrams, outlines, pictures, 
and hierachical structured paragraphs. Of 
course, complete, but simple examples provide 
good perspective with user related topics. Such 
complete examples tie together many subtask con- 
cepts so the user can see the big picture. 

The user's primary concern is to perform 
his task WITHOUT getting involved. 

Appearance 

A useful restaurant adage is "if it looks 
good it tastes good. " This also applies to a user's 



WEST COAST COMPUTER FAIRE 



122 



BOX 1579, PALO ALTO CA 94302 



document and I'll never have to eat my words. This 
approach is done by all the big computer companies. 
They publish great looking documents but all too often 
once you get into it the user's document is little 
better than useless. For example, one manufacturer 
published a very pretty 300 page user's reference 
manual without an alphabetical index but the system 
sold well (boy ! did the users ever complain). 

Appearance is effected by the page layout 
such as the spacing around and between paragraphs, 
the type font such as script for "smooth" appearance 
or bold for mandatory and easily recognizable items, 
and page titles. Bold face font may be used to 
emphasize key words. Round cornered heavy plastic 
tabs are impressive though expensive. Even more 
expensive is the art work done to illustrate and 
diagram user information but it can appear most 
effective. One of the most effective ways to create 
a useful appearance is to use color; although it is 
expensive. Colors have psychological effects on 
users. For instance, the error description section 
of a user manual might have a red tab. On the 
other hand a tab for the index may be yellow while 
the sections describing the user commands to 
execute useful functions might be green. Along this 
line, the printed page stock could be colored. The 
appearance of colors dictates how the document 
is to be used. 

If the format appearance is done well a tech- 
nical document, such as a computer user's guide, 
can increase comprehension. This is based on the 
fact that most technically oriented people tend to 
respond to ordered, sequenced, and logically 
arranged material. 

Technical Information Structure 



The following is a guideline for structuring 
written user information describing a subroutine, 
program, subsystem, or computer system. 

Paragraph 1. Tell why the user would want to use 
this item of the system/software. 

Paragraph 2. General form or format of this item. 

Paragraph 3. What are the results of using the item. 

Paragraph 4. Typical simple example with 
explanation. 

Paragraph 5. Simple description of the most 
straightforward use of this item. 

Paragraph 6. More detailed description of how to 
use this item. 

Paragraph 7. Discussion of problems, limitations, 
and other pitfalls the user should 
guard against. Discussion of what 
to do if these problems should occur. 

Paragraph 8. Description of special and more 
complex uses of this item. 

Wrap-up 

You may well realize by now that these 
documentation ideas for users also apply to many 
technical documents, including program documen- 
tation. By keeping these eight elementary concepts 



in your mind you too can be a success with good 
user documentation easily and simply. 

If we are really to meet a user's needs with 
our computer systems shouldn't we write the user's 
documentation before we do the design and develop- 
ment of our software/systems ? 



B. the User: 

—is looking for solutions 
■needs a reference 
-normally uses this document 
has a complex task 
-finds a user problem 
- has a special task 



r 



tr 



Then he will seek one of the 
following levels 

Why use 

General form of the solution 

Description of results 

Typical example 

Simple description 

Details 

Problem and alternatives 

Special uses 



Different Needs Dictate Different Uses 



References 

Mecham, Douglas J. 
You and Written Information 
Technical presentation, HP3000 Users Group 
Meeting, May 1974, Chicago, Illinois. 

Melby, Michael P. 
Written Communications: A System Approach 
Human Factors Soceity Bulletin, Page 1-3, 
December 1977, Volume 20, Number 12. 

Pacific Printers PILOT 
Monthly magazine, Richard Zimmerman, Editor, 
M. L. Droubley, Publishers, 583 Monterey Pass 
Road, Monterey Park, California 91754. 

How to Use Graphics and Tables, Booklet 
From Interpreting Graphs and Tables by 
Peter H. Selby, Copyright 1976 by John Wiley 
and Sons, Inc. 

Himstreet, William C. 
Getting Your Words Worth 
Talk, Association for Systems Management 
Los Angeles Chapter Meeting, 1972. 



WEST COAST COMPUTER FAIRE 



123 



BOX 1579. PALO ALTO CA 94302 



Birkwood, Ilene 
The Technical Writers Survival Kit 
Hewlett-Packard, Technical Paper given at 
HP3000 Users Group Meeting, Seattle, Washing- 
ton, September 1977. (Excellent reference.) 

O'Hayre, John 
Gobbledygook Has Gotta Go 
Bureau of Land Management, U.S. Department 
of the Interior, U.S. Government Publication, 
1966, 0-206-141. (A must to read. ) 

Journal of the HP3000 Users Group 
(HP3000 Users Group Newsletter) 
Hewlett-Packard, Santa Clara, California. 

65 Notes 
Richard J. Nelson, Editor 
2541 W. Camden Place, Santa Ana, California. 



Acknowledgement 

I wish to acknowledge three people who 
have assisted my preparation of this topic. First is 
my secretary, Lynda Schenet, who is a wizard 
with the typewriter plus spelling. Then there is 
Mr. Richard Nelson who inspires me to get- this 
kind of job done. The third person, Mr. Robert 
Barsalou, is from several years past who laid the 
foundation for these topics. 



WEST COAST COMPUTER FAIRE 



124 



BOX 1579, PALO ALTO CA 94302 



EDITING AND PUBLISHING A CLUB NEWSLETTER 

Richard J. Nelson 
Editor-Publisher PPC Journal 

2541 W. Camden Place 
Santa Ana, California 92704 



Introduction 

The fact that you read the title above and 
have gotten this far indicates that you would 
like to do some writing, have some ideas to ex- 
press, or are presently involved in writing, ed- 
iting, or publishing. The material that follows 
is an amateurs viewpoint, and the only justifi- 
cation I have for writing this paper is a suc- 
cessful newsletter(l). A newsletter is a fre- 
quent, less formal method of publishing timely 
information for a fairly narrow readership. 
Newsletters are periodicals that offer fast re- 
sponse compared to a magazine that is typeset 
and requires three months or longer leadtime 
from idea to print to reader. The Editor is re- 
sponsible for the content of the newsletter and 
the Publisher sees that the Editor's material is 
reproduced and delivered. For amateur newslet- 
ters the Editor and Publisher are often the same 
person. This paper will provide an overview of 
the task of editing and publishing a club news- 
letter. Specific tried and successful techni- 
ques will be included and some references provi- 
ded. This paper is not intented to cover the 
fields of graphic arts, technical writing, or 
printing, which would require several books. You 
should, however, be able to understand the prob- 
lems and have a base from which to start a news- 
letter if you are so inclined. 

Should I Edit a Newsletter? 

The motivation to become famous by circu- 
lating reams of world shaking information is 
within us all. In the real world, however, Edi- 
tors seldom become famous, or even well liked. 
A few do, but don't be misled into taking on an 
editing task if you don't like hard work and 
little recognition. You should plan on at least 
a year of editing if you are going to do it at 
all. It takes that long to get into a produc- 
tion mode and build a readership. Editors are 
not necessarily writers; they often write the 
material they produce, but they do not create 
the material, except for the first few issues in 
order to get started. There are exceptions * and 
there are many successful newsletters (success- 
ful here means profitable) which reflect the op- 
inion of an Editor knowledgable in a specific 
field. In the computer hobby field you will be 



spending your time stimulating, organizing, pre- 
paring, and printing. Computers are technical 
and you should have some technical or other ex- 
perience, such as software or applications, to 
draw upon for deciding the content of the news- 
letter. 

In deciding if you should edit a newsletter 
you should be notivated by a desire to serve a 
cause, such as a club, or to make a contribution 
to the field by providing needed information not 
readily available to the intended reader. If 
fame and fortune is your goal, don't take on a 
club newsletter except as a training experience 
for something more profitable later on. Be pre- 
pared to work mostly alone and independently. 
The mean time to burnout for your helpers will 
be measured in weeks and seldom lasts longer than 
two issues. If you haven't been too discouraged 
so far, let's get into some specifics. 



What Do I Publish? 

A club newsletter will usually have some 
specific goals, such as announcing meetings and 
reporting on activities. Unless you are taking 
over an existing publication that is well estab- 
lished, you will generally have a great deal of 
freedom on what type of material you publish. 
Success, as defined in this paper, is having 
more good material for each issue than space per- 
mits, and having a continuous growth and demand 
for what you produce. A club newsletter serving 
a hobby readership must support itself in most 
cases. You must provide material that people 
will read. In the United States we have struc- 
tured our communications media in such a manner 
that we try to make it easy for the reader. News- 
letters can't waste space with wide margins, 
large type, and profuse illustrations. News- 
letters usually have a small readership and lit- 
tle advertising. If the material in the news- 
letter is not needed (technical) or interesting 
(well written and illustrated), it will not be 
read. Deciding on what to publish is what makes 
an Editor successful. 

The first task is to identify the purpose of 
the newsletter. If the club is dedicated to 
computerized chess, the newsletter style and 



WEST COAST COMPUTER FAIRE 



125 



BOX 1579. PALO ALTO CA 94302 



content will be different than if the club is 

dedicated to small business systems. The chess 

enthusiast is interested in a very specific, very 

technical subject involving great detail. The 

business system user will be interested in the 

system and what other people are doing with it. 

Most club newsletters are of the latter type, 

and one of the keys to success is to recognize 

the people aspect of a highly technical activity. 40 publications a month for useful material for 



not from a specifically acknowledged source has 
probably been prepared by the Editor, or staff 
writer (not too common with club newsletters). 
Few authors will wish to remain anonymous. 

Events, products, news, etc., requires that 
the Editor be well read in the many publications 
related to the newsletter topic. Scanni-ng 30 to 



For a computer club newsletter it is inappropri- 
ate to get too involved with non-technical top- 
ics outside of club social activities. Topics 
involving religion, social reform, etc., should 
be included only if the computer plays a role, 
and the people involved are recognized in their 
field or are part of the club membership. The 
decision of what to publish should involve a sim- 
ple formula or mix. Various categories can be 
made; they will usually include: 

A. club activities 

B. human interest/applications articles 

C. feature technical articles 

D. reporting of events, products, news, etc. 

Club activities will include meeting ann- 
ouncements, programs, officer changes, or any 
item concerning the club that the reader should 
know about. This information, like all infor- 
mation in the newsletter, should be easily found 
by using a format common to all issues. Format 
and organization will be discussed later. 



Human interest and applications articles 
should involve club members if at all possible. 
Computers are interesting, but people using com- 
puters_are more interesting. A newsletter T s . 
usually of the general interest type, as mention- 
ed above with the business system example. A 
construction or assembly article is much more 
interesting if Mary Ann describes her own ex- 
periences along with the useful technical de- 
tails the article provides. This encourages the 
reader to get involved, because he or she relates 
to Mary Ann. How other people are using their 
machines, or the justifications they made for 
buying their machines, are topics that readers 
will want to know about. These types of articles 
will require special effort on the part of the 
Editor to encourage, nurture, and coax into 
print. 

Feature technical articles will form the 
real backbone of the newsletter. You will have 
to know who is doing what in the club to draw 
upon the members technical expertise. As Editor 
you may have to write the article after getting 
the information from the actual source. The per- 
son providing information gets the by-line, not 
you. The Editor rarely signs his name to arti- 
cles even if he creates and writes the material. 
The reader can assume that all material that is 



this category is not uncommon for an Editor. 
These publications may be freebees, or traded 
for being on your mailing list. If your news- 
letter is successful and contributes ideas, other 
Editors will want to exchange publications. 

What Format Shall I Use? 

The format of a newsletter, as the term is 
used here, is the layout of the material on the 
page. Margins, number of columns, typesetting, 
headings, and use of character size, upper and 
lower case, etc. A newsletter could be printed 
on a microdot, or it may be a simple page-wide 
column typewritten piece. Neither of these two 
extremes are recommended. Avoid special type 
styles, and DO NOT USE ALL UPPER CASE for text. 
It is unfortunate that most computer printers 
are not designed for human beings to read, but 
this is changing as computer and peripheral manu 
facturers realize that computers process text and 
the output should be readable by humans. If pos- 
sible, type the text and use computer printed 
material for program listings and tables. The 
tradeoff is, of course, readability versus ac- 
curacy. 



The choice of a format will depend on what 
equipment is available to you ■, how much informa- 
tion you want to squeeze onto a page and, to some 
extent, the readership you hope will read the 
newsletter. Gather at least a dozen different 
newsletters and study them. Try to get as many 
different kinds as you can. Look over the for- 
mats and observe the following: 

a. how wide are the margins? 

b. how many columns? 

c. is typesetting used? 

d. what type styles are used? 

e. is colored paper used? 

f. what kind of illustrations are used? 

g. how many, what percentage of space, for pho- 
tos? 

h. are the pages bound (folded) or single 

sheets? 
i. is it three-hole punched? 
j. what is the content, and readership of the 

newsletter? 
As you study various newsletters and answer 
the above questions you will be able to get a 
'feel' for the type of format that you will want 
to use. Here are my recommendations: 



WEST COAST COMPUTER FAIRE 



126 



BOX 1579, PALO ALTO CA 94302 



Use a two-column format as a compromise in 
paste-up convenience and readability. Do not 
right-justify; most studies show that right-jus- 
tification slows down the reader and, unless you 
are trying to make an 'image' of being a so- 

3l«S!*H h I 9h 3 Ua I 1ty p1ece ' the extra Production 
effort detracts from subject content. Reduce 
standard typewritten (10 or 12 characters per 
inch) produced text to achieve at least 1,200 to 
1,500 words per page. Start page numbering from 
Page 1 which is also the front cover. Leave a 
wider left margin on odd-pages and right margin 
on even-pages for binding or hole punching. Make 
top and bottom margins equal. Place page num- 
ber, newsletter name or logo, volume and issue or 
date, on each and every page. This should be 
standard practice for everything printed today 
because of readily available photocopying. Most 
people want to know the source of useful infor- 
mation and each page copied should have that in- 
formation. 

Masthead . At the top of Page 1 of each 
newsletter you will see the name and other infor- 
mation relavent to the newsletter. The masthead 
may be a simple name or it may be an elaborate 
design. The following information may be part 
of the masthead: 

1. publication name 

2. short description or explanation of the sub- 
's , J SJ» scope » or P ur Pose of the newsletter 

<5- LUGO 

4. issue identification by date, volume, issue 

b. cost 

6. copyright symbol 

. Time. The readers time may not be an ob- 
vious consideration in choosing a format A 
technical publication is usually read twice; 
initially, and later as a reference to obtain a 
specific part of the information. The layout and 
format, and especially the titles and illustra- 
tions, should be chosen carefully for descrip- 
tive accuracy and visual association. The effec- 
tiveness of the newsletter as a reference is di- 
rectly in the hands of the Editor. Time is also 
saved by utilizing the reader's familiarity with 
the newsletter. A newsletter that is consistent 

ITU ]! SU V° i ? S i e 1s easier t0 P roduc e and 
read if a formal format is established. 



per inch, column width, reductions, etc. A tyD- 
ical layout is shown in Appendix A. The figure 
shows the paste-up page and its dimensions alone 
with the print columns and margins. The formal" 
format should include the specifications for the 
newsletter and the paste-up. Reductions may be 
chosen as those used on the Xerox 7000. Reduc- 
tions #2 or 3 are good. #3 is especially prac- 
tical because the back of unusued, 132-column 
computer printout sheets (ll"xl4") make good 
paste-up sheets. The #5 reduction (61.5% of ori- 
ginal) is the limit that any reader will toler- 
ate and should be well justified before using 
Most will find the print too small for casual 
reading. 

Preparing the Text . After all of the above 
preparations have been made, the actual news- 
letter can be started. The many aspects of wri- 
ting cannot be covered here except to provide a 
not-so-obvious truism; you learn to write by 
writing. The mechanics of getting from idea to 
typed text varies considerably from the Editor 
who only has pen and paper to the Editor who 
writes, edits, and types his copy. Unless you 
are an excellent speller, have someone else read 
your copy before starting the cut and paste 
stage. 

Typing. The ideal typewriter is the IBM 
Correcting Selectric. The advantages of being 
able to use different type elements (balls) 
gives you a little more freedom in being able to 
express complex technical ideas in written form 
The newsletter material is single-spaced and 
typed the column width as defined by the format 
specifications. This means that a single column 
typed on 8V'xll" sheet will fit with space in 
the margins for notes. Column length can be 
thought of as continuous from beginning to end 
If you make a major error and wish to retype a 
single line or more, just make a notation in the 
margin to cut out during the paste-up stage. 



Formal Format . Write down a sketch of the 
layout that will define your format. Keep it 
handy so you may use it when you assemble the 
newsletter. The mechanics of the newsletter 
should be clearly defined and executed as a mat- 
ter of habit so you can be concentrating on the 
details of the content. As Editor/Publisher you 
may often have to be proofreader, illustrator, 
artist, etc. Once you prepare your formal lay- 
out you won't have to think about margins, lines 



Masthead. Your masthead will be the same 
for each issue except for Page 1 text and date, 
volume, number, etc. I suggest that you prepare 
a master page with all the material that won't 
change from issue to issue, and print 100 copies 

fn^D? 396 / 11 ^ 6 ™ 6 as a s P ecial Paste-up sheet 
for Page . This method insures a consistent 
print quality for your image-masthead. The idea 
approach is to prepare a paste-up sized master 
and print 100 copies of it for Page 1. The lar- 
ger sized plates and press required to do this 
makes the cost beyond the normal club resources. 

. Photographs. Photographs cannot be used as 
originals for making plates for a printer to 
print. Printing involves putting ink on paper. 
There is only white paper and black ink. There 
is no gray or shades of black! A photograph has 



WEST COAST COMPUTER FAIRE 



127 



BOX 1579. PALO ALTO CA 94302 



many shades of gray and must be screened to pro- 
vide a photograph (positive) that is made up of 
black dots that are either touching (black) or 
further apart (appears as gray) to give the ap- 
oearance of shades of white to black. The size 
and spacing of the dots control the detail of 
the printed image. If the dots are small and 
close together, a higher resolution (number of 
lines distinguishable per inch) is possible. For 
low cost printing, especially paper plates, pho- 
tographs should be screened 65 or 85 lines. If 
you take the photographs, or print them yourself, 
you should make them a little on the light side. 
Mount them on a piece of cardboard and take them 
to a graphics arts studio that will screen the 
photos with a 65 or 85 line screen. Ask for a 
screened positive. The originals will be re- 
turned to you so you can return them to the au- 
thor. Photographs are easy to include in the 
newsletter, and once you have found a quality 
source for the screening, you should have some 
photos in every issue. 

If your screened photograph is a Kodak PMT 
and you save your paste-ups for reprints at a 
later time, I suggest you wash them if your gra- 
phics arts studio does not. If they are not 
vashed, they may turn yellow in a few months. 
Simply place the prints in the full bathroom 
sink and slowly run cold water to rinse them 
for 10-15 minutes. Pull out, place on the 
Dathroom mirror and use a clean window squeegee 
to remove excess water from both sides, and 
then hang to dry. 



The Paste-Up . If the newsletter page is to 
be reduced, the camera (or. Xerox) copy must be 
larger. For example, this paper was prepared on 
a paste-up sheet with page size 10.24" x 13.25" 
which, when reduced to 83% of paste-up is SV'xll" 
Don't get confused with the ratios; professionals 
rtork in picas, etc. Having an engineering back- 
ground I simply use a ruler maked off in tenths 
Df an inch and use a calculator. Two factors 
should be noted on your formal format sheets; one 
to determine paste-up size from newsletter size 
(greater than one), and one to determine news- 
letter size from paste-up size (less than one). 
The table below illustrates the relationships. 
The two factors are reciprocals of each other. 
The Xerox 7000 reduction #3 is used: 



It is not practical to type directly on the 
paste-up sheet even if you have a wide carriage 
typewriter. The common practice is to cut and 
paste the material to the paste-up sheet. Rubbe 
cement is often used but I do not recommend that 
you use it. The best method is to use a hand 
waxer, or Scotch #810 tape. 

Paste-Up Techniques . The equipment used to 
perform the newsletter paste-up is described in 
the following section. You have typed your arti- 
cles in the column widths as determined by your 
format, and are ready to start your paste-up. 
Commercial paste-up sheets are available from 
printers or Graphic Arts suppliers. They will 
have light blue lines that serve as guides to 
attach the prepared typed text. You may not be 
able to find ones to suit your needs and will 
have to improvise. If a 77% reduction is used, 
11x14" computer sheets work fine. Cuff off the 
holes at the end and prepare a stack for a years 
use. Add your column guidelines by using a light 
blue pencil and a cardboard template that has 
cutouts and a block of wood for a handle. The 
side margins will not be equal, so mark the top 
of the template ODD PAGE with the wide margin at 
the left; turn the template 180° and mark the 
top EVEN PAGE with the wide margin to the right. 
You may mark all pages the same way and rotate 
them as you use them, or you may mark each page 
or E in sequence. The latter method takes 
longer, but helps prevent errors if a non-reduced 
page is used. Use one system and be consistent. 
The idea is to establish a system for the first 
issue and have the mechanics follow the system 
so you can concentrate on composing the page. 



The paste-up sheet will be reduced by Xerox/ 
or camera by the printer. When a column of ty- 
ped text is cut by papercutter I recommend leav- 
ing about 1/16" white space on each side of the 
column. This allows the printer to be able to 
remove any shadow if he is using an electro- 
static plate maker. If you reduce your paste-up 
on a Xerox machine, I suggest you place a soft, 
thick, white ink blotter, larger than your paste- 
up sheet, on top of it. Press on the Xerox rub- 
ber cover to keep the paste-up sheet as close to 
the glass as possible - the ink blotter paper 
(or dozen sheets of newspaper) helps distribute 
the pressure to keep the whole sheet flat. This 
will reduce the shadows that may be picked up by 
the non-parallel light source in the machine. 



Paste-Up Reduction 
Sheet % of 
Paste-Up 



Multiplier 
for News- 
letter Size 



ll"xl4" 



77% 



0.77 



Fable 1. Paste-Up vs Newsletter Page Sizes 



A useful technique for cutting the typed 

M ... ,. text with a papercutter is to place a large white 

Multiplier sheet Qf paper Qn the table under the blade . This 

for paste-up reflects overhead light, and your hand placed 
size - above the text being cut provides a light con- 
trast that shows a shadow of the bottom edge of 
— the papercutter. A precise cut can be made usinc 
this technique. A single line of type can be 



1.30 



WEST COAST COMPUTER FAIRE 



128 



BOX 1579, PALO ALTO CA 94302 



removed without difficulty. An Xacto knife is 
useful, but the papercutter method is faster and 
easier. 

Attaching the cut text or photos to the 
paste-up sheet may also be done using a small 
sliver of Scotch Magic Tape #810. Using a tape 
dispenser, a pair of scissors, and tweezers, cut 
the tape as follows: pull tape out 2", cut 1/16" 
off the end to remove the jagged edge made by 
the previous cut of the dispenser. Hold the 
'floating' end of the tape with the tweezers. 
Cut a 1/8" length with the scissors. Hold with 
tweezers and tape the photo, etc., to the paste- 
up sheet. This small amount of tape won't be a 
problem for the plate maker (larger pieces will 
reflect too much light), and using the tweezers 
to slip under the 'pasted' material it is easy 
to move if required. 

Using a hand waxer is the best way to assem- 
ble a newsletter. The paste-up sheet may be 
waxed, but it is best to wax the material being 
laid down on the paste-up sheet. A stack of 
newspapers, cut in half to reduce table space, 
makes a good work area to roll the waxer over 
the text, etc. (upside-down). The newspaper 
is discarded once there is wax on it to avoid 
the disaster of getting wax on the text side of 
the paper. 

Equipment . Preparing a newsletter requires 
some basic equipment which is essential if you 
expect to survive even one year. The first piece 
of equipment you should have is a large, good 
quality papercutter. Spend the $20 to $35 to 
get one that has at least a 12" blade. Next is 
that marvelous gadget - the waxer (2). A waxer 
is a small roller with a heated reservoir of hot 
wax which rolls a 2" wide layer of a special 
sticky wax over anything. The paper sticks be- 
cause the wax has a sticky characteristic that 
holds paper to paper when a small roller is used 
to press the sheets together. Tweezers (Clauss 
#AA), Xacto knife, and large 18" ruler with 1/10" 
scale are important tools for an Editor doing 
his own paste-ups. 

Printing . 

Acceptable, low cost printing can be found 
in most larger cities. Southern California, es- 
pecially the Los Angeles-Orange County area, 
seems to offer the lowest cost printing in the 
U.S. One hundred copies of an, orig'irial costs 
$2.12, tax included. iwo k hundred copies, $3.18. 
This offset printing process uses an electro- 
static process to make a paper plate. Check with 
local printers to see what is available. Visit 
tfieir shops and see what equipment they have. If 
you reduce your paste-ups free on a friendly em- 
ployers Xerox 7000, you will have a continuous 
problem of varying quality. Usually the printer 



has a camera capable of handling most paste-up 
sizes and he will make the plate from the paste- 
up. I want a permanent file master and pay $2.0C 
per page for a reduced PMT positive print for 
each page. The printer makes his plates from 
the PMT, This has the additional advantage of 
being able to add full size titles waxed to the 
PMT to give larger headings, etc. It does add 
an extra day to the production process. 

There are many methods of producing the man> 
copies required to mail or distribute to your 
readers. Offset printing is best, Xeroxing or 
other photocopying methods, such as the 3M or 
Savin copier, may be used to obtain two-sided 
copies. Offset printing is lower in cost and 
provides better quality than photocopying. Ask 
the photocopy shop if they have a price and ser- 
vices list. Examine it - most likely it is 
printed! I once experimented with an issue re- 
produced on a Xerox 9200; the newsletter was 32 
pages and I had 2,000 copies run. The pricing 
was a little higher than printing; delivery time 
about the same for collated sets. Quality, how- 
ever, was inconsistent and I never went back. 
My friendly printer gives me his odd sheets (the 
'extras' a printer prints to insure having e- 
nough printed properly on both sides) which make 
useful material for correspondence, paste-ups, 
etc. 



Collating . 

Most printers will collate your newsletter 
for an extra charge. If the newsletter is a 
club effort, you can do the collating at the 
same time you prepare the newsletter for mail- 
ing. A bookshelf makes a good collating device, 
or a homemade collator can be made. Cut slots 
for 9%"xll 3 s" sheet metal shelves, 1" apart, for 
a small 'bookshelf 9" wide. The height of the 
collator can be about 18" for a 16-shelf capa- 
city. The horizontal sheet metal shelves can 
be slid into their slots 2" for the bottom, 3" 
for the next, etc., going up. Five to sev,en« * 
sheets can be collated with about IPO sheets per 
shelf capacity. A wet sponge moistens the index 
finger to pull the sheets out, and a quick col- 
lation of 300 sets of a 14-page newsletter can 
be done jn«an hour. 

Printing the first page of the newsletter a 
different color gives it character and allows 
many issues to be stacked for storage and easy 
separation later. 

Mailing . 

One of the biggest problems is the mailing 
list and production of labels. I suggest the 
following scheme to maintain the mailing list 
and produce the proper labels for each mailing. 



WEST COAST COMPUTER FAIRE 



129 



BOX 1579, PALO ALTO CA 94302 



i Assign each member/subscriber a sequential num- 
Iber. Type his name, number, and address in three 
or four lines centered on an Avery label sheet, 
#5351, intended for Xerox copies. Write the 
member's expiration date in pencil on the lower 
right part of the label. The 5351 label sheet 
has 33 l"x2-3/4" labels stuck to a waxed sheet. 
Reserve the upper-right label for a large number 
to identify the sheet. When mailing time arrives 
scan each sheet to find expired members. Peel 
off their label and place on the back of the 
sheet. Take your box of master labels to a Xerox 
machine and have them duplicated onto another 
set of 5351 labels. Peel and stick the dupli- 
cate set to envelopes or self-mailer newsletters 
at a rate of 450-500 per hour. When a member 
renews, place his label back on the front. 
Changes are easily made. Do not make copies in 
advance; things change too fast. A mailing list 
of 3,000 has proven no problem -in maintaining in 
this manner. 



Another scheme that has worked with older, 
slower photocopiers, is to photocopy Page 1 which 
is also a self-mailer and contains the address 
information. The mailing list is typed on a 
length of adding machine tape with convenient 
spacing. Two slits are made in the original 
placed on the photocopier window. After each 
copy the tape is pulled through the two slits to 
show the next address. The sequential numbering 
of the names allows a quick check that the list 
was complete. Both methods have been used with 
success - never does a member not get an issue 
mailed to him. The Post Office may lose it, but 
you have one addressed to him each issue. 



Avoid sticking stamps if possible. It is a 
chore because the managers of our postal system 
have no concept of providing stamps in convenient 
form. Rolls are reasonable for various forms of 
mechanization, and go fast manually. Sheet 
stamps can be stacked five to ten in a stack, 
stapled at one edge, and cut into strips on the 
papercutter, leaving the whole sheet still atta- 
ched (for counting and control) with the cut 
stopping V' from the end. Tear off one stack 
strip at a time and apply using a sponge. The 
problem is that usually the required amount of 
postage is not a single stamp in roll form. 
Foreign postage requires extra time, so allow 
your extra charges to cover this expense. Send 
First Class to insure delivery — remember, a 
newsletter is timely. Foreign is sent Air MaiN 
Other Article - and requires a non-sealed clasp 
envelope. 

Obtain a mailing permit if you qualify. A 
mailing machine is OK if your club doesn't have 
to buy and maintain it. Mailing permit informa- 
tion, and mailing costs for various classes of 
mail, is wery difficult to get from the Post Of- 



fice, but give it a good try. Go to a Main Post 
Office after calling to make arrangements to talk 
to someone who handles business accounts. The 
usual window teller cannot help you much. Per- 
mits are reasonable in cost and allow you to 
print a cancelled logo on the envelope. Most 
newsletters are marked FIRST CLASS, dated mater- 
ial, and mailed with a permit. 

Finances . 

The club usually finances the newsletter. 
Costs for a year's operation are very predic- 
table if a fixed issue size, including attach- 
ments (such as a member list, index, etc.), is 
determined. Allow 20 or 30 issues for Editors 
exchange and overprint enough for those special 
packages of back issues an Editor will want to 
swap with other Editors. You should not have to 
worry about finances or getting checks to pay 
the printer. If you do your planning properly 
before your first issue is printed, you will 
save considerable time and frustration. Printing 
costs, label, envelope, and assembly costs will 
be small compared to mailing costs. Allow for 
supplies such as tape, rub-on labels, liquid 
paper, black pens, and blue pencils. Typing can 
be professionally done without financial diffi- 
culty if your mailing list is several hundred. 
Do not take on a newsletter that can't support 
itself. Advertisements will help, but for a 
small operation it won't contribute much and are 
essentially donations by local businesses. 

Conclusion . 

Editing and publishing a club newsletter 
caji be a rewarding and educational experience. 
Most people have no concept how time consuming 
it can be. The Editor will spend six to ten 
hours per page per issue if he does not do the 
typing, and his print density is 1,200 plus wordSi 
per page with illustrations and photographs. The 
pressure of working to a deadline can be too 
stressing for some people. It seems that you re- 
lax a few days after crashing out the last issue, 
then you realize that you are getting late for 
the next one. Your reward for taking on the 
task must be self- fulfillment of getting good 
technical information to your readers and the 
pride of doing each issue a bit better than the 
previous one. 

There are no special requirements or train- 
ing that will make you into a good Editor. A 
certain feel and interest in information gather- 
ing and dissemination is required. Editing, 
writing, and programming are similar; you really 
don't know if your efforts will be successful 
and rewarding until you try. 



See bottom of Appendix page for footnotes. 



WEST COAST COMPUTER FAIRE 



130 



BOX 1579, PALO ALTO CA 94302 



APPENDIX A - FORMAL FORMAT 111 



Paste-up sheet layout 



11" 
(8.5) 



1.2" 
(.92) 






1" (.77) 



MASTHEAD AREA 



Column is 53 characters 
across @ 12 char. /in. 
This is 8.8 words per 
column. (6 char/word) 
Column length is 12 in. 
Six lines/in is 72 lines. 
Words per column is 
72 x 8.8 = 634. Words "^ 
per page is 1,268. 



Note: Typeset text has 
variable spacing and an 
average must be used if 
I a comparison is made. 

T 



i. 



HEADING 

"1 

-0.9" (.69) 



.5" 
(.39) 



.5" -j 
(.39) 



H 



1.7" 
(1.3) 

_1_ 



14" 
(11) 



f 



e 



1" (.77) 



I 



Odd page and front page, even page rotate 180°. 

Note: Numbers in parenthesis ( ) are newsletter page dimensions. 



This layout uses the reduction shown in table 1 of the text. It is a good 
place to start if you are doing your first newsletter. It is effecient in 
that 1200 words per page is still in a type size that is readable by most 
people. Make notes to formalize your layout to insuure a consistant newsletter. 



Footnotes . 

(1 ) The newsletter is the PPC Journal, formerly 
called 65 NOTES, a monthly publication of 
PPC, formerly called the HP-65 USERS CLUB. 
PPC is a dedidated Personal Programmers 
Club for Hewlett-Packard Personal Program- 
mable Calculators. PPC Journal readership 



is nearly 2,000. PPC members contribute 
$15 per year for the programs, programming 
techniques, applications, and hardware modi- 
fications information published in the PPC 
Journal . 

(2) Write Paste-Up Supply, 1113 Walnut Street, 
San Gabriel, California 91776, (213) 283- 
4610, for information on waxers and supplies 



WEST COAST COMPUTER FAIRE 



131 



BOX 1579, PALO ALTO CA 94302 



DEUS EX MACHINA 

or 
The True Computer ist 

by 

Tom Pitt man 

P.O.Box 23189 

San Jose, Ca. 95153 



Several years ago, when the idea of a personal computer was still 
only a gleam in my eye, I made an observation about my work as a 
computer programmer. I suppose the same thoughts have occurred 
in the minds of painters, sculptors, composers and other artists 
down through the ages. I perceived that I was giving existence to 
something which had not existed before — I was creating ex nthtto, 
out of nothing. To be sure, most of the programs I wrote were mere 
copies or adaptations of other programs, and nothing new in 
themselves. And, the taxman to the contrary, there was no tangible 
substance to the work of my hands. But every once in a while I could 
stand back and look on my work and say, "See what I made!" 

I do not wish to quibble at this point with those who claim that 
nothing is truly a creation. As I said, most of the programs I write 
are merely copies or adaptations of some other programs. I am not 
talking about those. Nor do I particularly wish to quarrel with 
oehaviorists or social biologists who reduce every activity of Man to 
the effects of his environment or his genes. What I am getting at 
here is the particular feeling that only comes with knowing you have 
created something new. It is not quite the same as the feeling an 
expert technician gets in his craft, the sense of doing a job well. I 
have felt that often, and I continue to take a certain pride (if you will 
pardon my immodesty) in the high technical quality of my work. 

There is a difference between the technician and the artist. The 
technician is building to an existing pattern or plan; the artist is 
making a new plan. The technician has a standard by which to 
measure tiis work; the artist ts his own standard. Of the- 
technician's work you can say "He did (or he did not) meet the 
requirements of the specifications"; of the artist's work you can only 
say "Ahhh!" or "Yecch!" 

I wish the boundary between the technician and the artist were 
that clear-cut. It is seldom so. What the artist creates is, whether 
he likes it or not, subject to technical criteria. If he is painting a 
portrait or a landscape, you can apply the purely technical 
judgements to it of whether or not it adequately conveys an image of 
the subject. You can even determine if the paints have been mixed 
correctly, or if they are likely to deteriorate and change color with 
age. Is the perspective and lighting believable? Into this technical 
fabric, however, is woven the art, the quality that makes Dttrer great 
and Cranach so-so. 

I am a programmer, not a painter. It is much harder to see the 
"art" in a computer program. Donald Knuth sees it and the title of 
his monumental work on programming is "The Art of Computer 
Programming" [1]. I only hope nobody asks me to point to some 
program and say "this is art, not technique." Perhaps I am a coward 
and lack the fortitude to defend such an assertion. Perhaps there is 
no defense and I dislike making indefensible assertions. No matter. 
.Vly point is that the assertion can be made, and that it has meaning 
(at least for most of us). 

I raised the issue in connection with a certain feeling I got as I 
reviewed my work, when I saw it as a creation. You see, in that 



instant I as a Christian thought I could feel something of the 
satisfaction that God must have felt when He created the world: 
"And God saw every thing that he had made, and, behold, it was very 
good." [2] If man is, as Christians believe, created "in the image of 
God" 1 3], then perhaps I had learned something about God. In this I 
have a definite advantage over the painter and the composer: I can 
create something that will interact with me, as man interacts with 
God. So far it is a strictly intellectual interaction, and for the most 
part very predictable — my creation does what I programmed it to 
do, which is (usually) what I had intended. I consider my insight to be 
only a pale reflection of the devine, but... 

Yet in my relationship to the computer and to the programs I 
write for it there is another dimension, wherein lies a very grave 
danger. The danger is that I will lose my sense of perspective, and 
forget the relationship between God, myself, and the computer. 

Theodore Nelson in his popular book, Computer Lib , refers to a 
"computer priesthood." [4] By this he means that the computer 
technology has built up around itself a kind of mystery religion or 
gnosticism, with the computer professionals acting as the priests of 
that religion. Gnostic religions in history have had a body of secret 
knowledge (the word "gnostic" is derived from the Greek word for 
"knowledge") which only the insiders have access to. just from a 
technical point of view this was, and continues to be, a very real 
problem. The use of computers in our time requires such a heavy 
t echnol o gicaf background that- outsiders are locked out. 

To be introduced into this computer gnosticism has, until only 
recently, required skill with a soldering iron (not just "Which end is 
hot?" but the proper way to apply solder to microelectronic circuits, 
special soldering tools, etc.), understanding of how to read resistor 
codes and the cryptic markings on integrated circuits, proper work 
habits for protecting delicate MOS components from static 
electricity, and the ability to decipher inadequate instructions and 
third-generation xerox drawings. With a small but increasing 
number of exceptions, the novitiate computerist is required to know 
(but is not given instruction in) binary, octal, and hexadecimal number 
systems, machine language programming, real-time I/O control, 
ASCII code translation, and memory management. Unless he is 
willing to remain in the outer circle playing games that someone else 
wrote, the new gnostic is compelled to learn a foreign language 
something like Latin (BASIC) and be able to construct in that language 
esoteric hymns called Loops, Subroutines, Conditionals, 
Assignments, Input/Output and Data statements. I can assure you 
that the language requirement is not going to disappear for many 
years. We may get new languages, but that will only mean that the 
insider must know more, not less. 

Until the advent of personal computers in 1975, Computerism was 
successfully restricted to the elect who went through the necessary 
training and were employed in the computer departments of those 
corporations, educational and government institutions rich enough to 
be able to afford them. It was a closed society. With the advent of 



WEST COAST COMPUTER FAIRE 



132 



BOX 1579, PALO ALTO CA 94302 



the truly personal computer the ranks have been opened up to admit 
something over 100,000 new converts, but the careful observer will 
notice that it is still a closed society. The outsider is not really given 
much reason or help to join. Almost all of the magazine articles are 
directed to intermediates, not beginners. There are a very few 
books aimed at the novice (but not the totally uninitiated!), but they 
tend to get lost in the vast majority of books for the more 
sophisticated* By contrast, the number of Christian books aimed at 
the novice and uninitiated far exceeds those that require a significant 
background in theology. Computerism is still a closed society, though 
much larger than it was five years ago. 

So far I have been talking only about the phenomena of gnostic 
computerism, the appearances of the society. There is a deeper 
level that is much more serious. It is where we, the practitioners of 
this arcane art, begin to believe as we act. When we actually come to 
depend on the Computer to solve all our problems and to resolve even 
the mysteries of life, we have taken the final step toward making the 
Computer our god. At this level, opening up the secrets of 
computerism to all comers makes no difference at all; whether the 
Computer is a gnostic god or an evangelistic god is of little 
consequence, because we are talking about individual attitudes 
towards the machine. That is you and me, not "us" or "them." 
Institutions are formed from the aggregate of individual attitudes 
and beliefs. 

Before I get into what the Computerist believes, let me say 
something about the nature of belief. All of us prefer honesty over 
deceit (at least in the other person), kindness over malice (when all 
other things are equal), and so on. In the words of Mammy Yokum, 
"Good is better than evil, because it's nicer." [5] But when it gets' 
down to cases, with two of you out on the raft in the middle of the 
Pacific and food for two days, the choice of who eats the food and 
who dies of starvation depends on what you really believe. Or closer 
to home, it's rush hour and you are late to work; there is a long line 
of cars behind yours and you come to an intersection where a little 
old lady wants to cross the street you are on. This is where belief 
affects our lives. Your faith — your religion, if you will — is what 
makes the decision when it could go either way, but for different 
reasons. Notice here that I am not using the term "religion" to mean 
the religious institutions of society. Many of these function only as 
social institutions with little or no effect on the lives of the 
adherents. Instead I use the definition that equates religion with 
whatever is foremost in a person's thoughts and actions. In this 
sense everyone has a religion: some of us are Christians. Others 
are hgoists, "Moneyists", Scientists, Marxists, Sexists or 
Computerists. The focus of our attention is our god. 

So what is it that the pious Computerist believes? Which way will 
his decisions go, when it gets down to the crunch? Let me list a few 
"articles of faith" that affect the every day life of the practicing 
Computerist: 

1. The computer is more interesting than most people. I love to 
spend time with my computer. It is fun to write programs for it, to 
play games on it, and to build new parts for it. It is fascinating to try 
to figure out what part of the program it is in by the way the lights 
flicker or the radio buzzes. It beats dull conversation any day. 

2. It is most important to be sure the computer is properly taken 
care of. When it finishes its present task, I must drop everything 
and go start up its next task, or turn off the disk drives to save wear 
and tear on the moving parts. If there is a power failure, ftrst go 
shut down the peripherals (save the disk, turn off the paper tape 
punch, etc.), then come back and get a candle to light up the house. 

3. The computer will be a big benefit in all kinds of ways. It is 
not connected up yet, but "soon" it will control the sprinklers, serve 
as a fire/burglar alarm, maintain the Christmas card mailing list, 
control the stereo tape deck, monitor the central heating, maintain 
the inventory in the pantry, provide menu planning, remind us of 
important dates, write form letters to people we don't like, educate 
our children, and so on. The key concept is that all these things are 
in the very near future. The computer has not yet fulfilled these 
promises, but it will very shortly now. 

4. The computer needs just a little more (memory) (speed) (disk 



space) (peripherals) (fidelity in its cassette drive) (better BASIC) 
(newer CPU) (noise suppression on the bus) (debugging on this 
program) (powerful editor) (bigger power supply) before it can do this 
or that. 

5. The computer can make money for us on the side, and 
eventually it will pay for itself. 

6. Spending all this time on my personal computer will give me job 
skills that will improve my wage-earning ability and make me eligible 
for a promotion. 

7. The computer can be used in the company business to improve 
profitability. 

8. There is no need to buy this software package or tnat circuit 
board; I can design one better. 

9. Let's arrange our next vacation to coincide with the Computer 
f aire. Wow! what a way to spend a vacation! Then we can swing by 
these manufacturers and/or these stores and see the latest widgits. 

10. To stay on top of the field it is necessary to subscribe to all 
five of the "Good" computer magazines. The other six are merely 
repetitious or uninspired or are beholden to their advertisers; they 
are not worth the subscription price. But when a good one comes sit 
down immediately and do not get up until I've gone through the whole 
magazine. 

11. Never miss a club meeting. This is where it's at. The juicy 
little news bits, the how-to-fixits for the problem that has been 
bugging me for the last two weeks, hearing about the interesting 
things that I can do with my computer — that is the real thing! 
Besides, they might have some free software. 

12. Visit the local computer store at least once a week. They 
are always getting new hardware in, and sometimes you can pick up 
some good rumors or a new book. You never know when you might 
bump into an Interesting Person at the store. 

None of these claims, by themselves, are particularly wrong or 
indicative of misdirection. But taken as a whole, they reflect an 
attitude that the computer is, in Paul Tillich's words, "the ultimate 
concern." [6] The computer becomes the object of one's devotion, 
the provider of one's needs. The computer has become the Absolute! 
the god in one's life. It is the work of our hands and the image of our 
minds; are we going to let it become the Lord of our lives? 

I would like to take exception to some of the "articles of faith" 
listed above. I have been there and I know the attitudes behind them. 
But I also know what is wrong with some of them. 

1. Clearly the computer is a fascinating device. Its complexities 
are overwhelming. I said this at the beginning, and I do not deny it 
now. But being the product of our own imagination, the computer 
probably cannot exceed our own intelligence. It may be faster and 
more accurate. It may do some things (like play chess) better 
because of this greater speed and accuracy, but it can never give us 
true inter raction on a human level. I realize I am going out on a limb 
in saying this; roboticists will gladly point to claims that humans 
would never leave the surface of the earth. Those claims were 
obviously wrong; I may be wrong also. But I can point to the 
difference between a technician and an artist with which I began this 
essay: vVe may be able to build robot technicians, but not robot 
artists. In any case it is unlikely to happen in your or my lifetime. 
The computer is a toot, and we should recognize it as such. 

2. The computer is a delicate machine and as such it requires 
care and maintenance. It is relatively expensive (today) and abusing 
it is not economically reasonable. But it is still a machine; it is not as 
important as any human being. 

3. The computer is capable of many kinds of benefits. But 
honestly now, how many of those things do you think you will actually 
get your computer to do? How many people do you know or have you 
heard of whose computer actually does those things, or even just 
some of them? Have you considered the transducers and mechanical 
linkages required to give the computer a meaningful selection over 
your music collection? Do you have any notion of the software effort 
needed to implement a computerized calendar or heating control (I 
mean beyond what is more easily done without a computer)? Have 
you ever stopped to think how much manual effort is required to 



WEST COAST COMPUTER FAIRE 



133 



BOX 1579, PALO ALTO CA 94302 



maintain a computerized pantry inventory? Have you considered the 
massive data entry requirement to build a data base for a decent 
menu planner? If educators and computer professionals working 
with large government grants cannot make much headway in 
Computer Assisted Instruction, are you going to master it in your 
spare time? Don't get me wrong. Many of these things are practical 
goals for computer implementation, but most of us, working on it as a 
hobby, will not get very many of these exciting applications working 
in any meaningful way. 

4. In the microcosm, the need for a little more of this or that for 
the computer seems very reasonable. A few years ago the Sunday 
supplement of some newspaper reported a survey on the money 
wishes in America. The result was that the average American 
would be happy if he or she had $13.21 more. Parkinson's Law holds 
that expenditures will always meet or exceed income. The same law 
applies to computer memory, speed, peripherals, and so on. 

5. Several of the magazines are touting the economic rewards 
potential in the personal computer. They are wrong. Suppose you 
did get a little extra money on the side computing bowling handicaps. 
What is to stop the local bowling alley from seeing the profit potential 
and buying their own computer? Maybe you will sell a neat game to a 
national distributor, but how many others are pushing games to the 
same distributors? Anyway, have you invented any neat games? 
Obviously some computers pay for themselves (mine does), but far 
more only promise to do so. 

6. Right now there is a shortage of people with microprocessor 
experience. Five years ago there was a shortage of COBOL 
programmers, but there is a glut now. People with drive and 
dedication, who make themselves valuable to their company, have no 
trouble finding work. People who stay up late nights on their own 
projects and are too tired to give the boss an honest day's work, who 
spend hours on the telephone ordering parts on the company bill for 
their personal computers, will find trouble finding and holding any 
kind of job. 

7. Yes, computers have improved the profitability of some 
companies. More often they have only promised to do so. You do not 
replace a bookkeeper with a computer; you give her a raise and call 
her a computer operator. It is still some time before we will see 
much business software available and usable. 

8. This one is subtle. Of course you can design one better. The 
computer is above all things an optimist's machine. But you won't. 
You don't have the time to get around to it, or it seems to have some 
problems when you do get it built: it never seems to work exactly the 
way you planned. 



9-12. by now the computer has moved out of the den and into the 
rest of your life. It will consume all of your spare time, and even 
your vacation, if you let it. It will empty your wallet and tie up your 
thoughts. It will drive away your family. Your friends will start to 
think of you as a bore. And what for? 

A few years ago I was doing some technical writing for a major 
electronics firm, and I had described some control circuit in terms 
such as, "the device provides such-and-such functions..." One of 
the people assigned to review my work reprimanded me: "Only God 
'provides 1 , circuits just..." I can no longer recall the exact details of 
the exchange, but I have not forgotten the message. God provides. 
Electronic circuits in general, and computers in particular, are not 
God; they provide nothing. They may be works of art, a beauty to 
behold, but in the final analysis, they are tools and they perform 
certain functions at our command. If we forget that computers are 
only tools, perhaps we will also forget that people are not tools, 
when we know Who is God, we also know who we are, and what 
computers are. In the words of the Second Commandment, 

Thou shalt not make unto thee any graven image, or any 
likeness of any thing that is in heaven above, or that is in the 
earth beneath, or that is in the water under the earth: Thou 
shak not bow down thysetf to them, nor serve them: for I the 
LORD thy God am a jealous God. [7] 

References 



[1] 

12] 
13] 
[4] 
15] 
16] 



17] 



Donald E. Knuth, The art of computer P rogramming. Reading, 

iviass: Addison- Wesley 1973. 

Genesis I 31. 

Genesis I 27. 

Theodore H. Nelson, Computer Lib, p.2. Chicago: 1974. 

Al Capp, Lit Abner Sunday comics approx. 1974. 

Paul Tillicn T&ynamtcs of Faith, New York: Harper 1957. Most of 

this book Is nonsense, but Tillich does have a good 

understanding of what constitutes idolatry. 

Exodus XX 4,5. 



L WEST COAST COMPUTER FAIRE 



134 



BOX 1579, PALO ALTO CA 94302 



PEOPLES' CAPITALISM 
THE ECONOMICS OF THE ROBOT REVOLUTION 

James S. Albus 

(c New World Books 
4515 Saul Road 
Kensington, Maryland 20795 



Abstract 

Where are computers taking society? 

Will industrial and business robots 
lead to: 

Orwellian dictatorship? 

Jef f ersonian democracy? 

A new aristocracy based on robot 
labor? 

Who will own these machines, and who 
will control the economic wealth and 
political power they will create? 

The great challenge of the coming 
industrial revolution will be to develop 
an economic system wherein prosperity can 
be achieved without waste, affluence can 
be made compatible with the limits to 
growth, and personal freedom can be pre- 
served and enhanced in a world where 
most economic wealth is created by auto- 
matic machines. 

Peoples ' Capitalism is a plan for 
meeting this challenge. It is a formula 
for a new economic order which might 
best be described as Jeffersonian democ- 
racy for the post-industrial era. 

The details of this plan will be 
described and a program for political 
action will be presented whereby Peoples' 
Capitalism could be introduced into any 
country in the world by the year 2007. 

Epilogue to Scarcity 

These are revolutionary times. 
Changes as profound as those resulting 
from the invention of agriculture or the 
domestication of wild animals are rushing 
us toward a new world. The human race 
is now poised on the brink of a new in- 
dustrial revolution which will at least 
equal, if not far exceed, the first in- 
dustrial revolution in its impact on 



mankind. The first industrial revolu- 
tion was based on the substitution of 
mechanical energy for muscle power. 
The next industrial revolution will be 
based on the substitution of electronic 
computers for the human brain in the 
control of machines and industrial 
processes. 

From the beginning of human exis- 
tence, mankind has lived under the 
ancient biblical curse: "By the sweat 
of thy face shalt thou eat bread, till 
thou return unto the ground." Before 
the invention of the steam engine, 
virtually all economic wealth was 
created by the physical labor of human 
beings, assisted only by their domestic 
animals. 

The first industrial revolution 
only partially lifted the ancient 
curse. Yet, even this partial reprieve 
had profound consequences. In all the 
thousands of centuries prior to the 
first industrial revolution, the human 
race existed near the threshold of 
survival, and every major civilization 
was based on some form of slavery or 
serfdom. Yet a mere two centuries 
after the introduction of steam power 
into the manufacturing process, slavery 
has become little more than a distant 
memory for the citizens of every major 
country. Today, a large percentage of 
the population of the world lives in 
a manner which far surpasses the wild- 
est Utopian fantasies of former 
generations. 

There is good reason to believe 
that the next industrial revolution 
will change the history of the world 
every bit as profoundly as the first . 
The application of computers to the 
control of industrial processes will 
bring into being a new generation of 
machines ; machines which can not only 
create wealth unassisted by human 
beings, but which can even reproduce 
themselves at continuously decreasing 



WEST COAST COMPUTER FAIRE 



135 



BOX T579, PALO ALTO CA 94302 



costs. The potential long-run effects 
of this event are twofold: First, it 
will allow man to free himself from the 
dehumanizing demands of mechanization. 
The self -regulating capacity of computer- 
controlled industries will render it un- 
necessary for people to structure their 
lives around daily employment in factories 
and offices. The first industrial revol- 
tion drew people away from the land and 
concentrated them in urban industrial 
communities. The robot revolution will 
free human beings from the pressures and 
congestion of urbanization and allow 
them to choose their own lifestyles from 
a much wider variety of possibilities. 

Second, the introduction of the 
computer into manufacturing has the 
potential for removing material scarcity 
from the agenda of critical human prob- 
lems. The technical feasibility of fac- 
tories and industries which can operate 
unattended and reproduce their own essen- 
tial components implies that manufactured 
goods may eventually become as inexpen- 
sive and unlimited by process complexity 
as the products of biochemical mechanisms 
in living organisms. Increased efficiency 
and flexibility of substitution between 
materials and processes could render 
currently projected shortages of fuel 
and materials largely irrelevent to the 
21st century. 

Unfortunately, the present economic 
system is not structured to deal with the 
implications of a robot revolution. 
There presently exists no means by which 
average people can benefit from the un- 
precedented potentials of the next 
generation of industrial technology. 
Quite to the contrary, under the present 
economic system, the widespread deploy- 
ment of automatic factories would threaten 
jobs and undermine the financial secur- 
ity of virtually every American family. 



I claim that, if we properly 
utilized our scientific knowledge and 
our industrial capacity, we could not 
only overcome the present economic 
crisis, but we could go on to elimi- 
nate poverty altogether and guarantee 
personal financial security to every 
individual. Furthermore, this could 
be done in a manner compatible with a 
clean environment and an ecologically 
balanced world. 

The great challenge of the coming 
industrial revolution will be the 
development of an economic system 
wherein prosperity can be achieved 
without waste, affluence can be made 
compatible with the limits to growth, 
and personal freedom can be preserved 
and enhanced in a world where most 
wealth is created bv automatic 
machines. This paper is an attempt 
to formulate a plan by which this 
could be accomplished. The proposals 
contained in the following paragraphs 
might best be described as a formula 
for Peoples' Capitalism, or as a 
blue print for Jeffersonian Democracy 
in a modern technological society. 

Even the most casual observer of 
what goes on in the average factory, 
office, or construction project 
cannot help but notice that most of 
what is produced comes from machines 
and not human labor. Scholarly 
studies confirm this common sense 
observation, showing that the over- 
whelming percentage of productivity 
i her eas es over tfie pas t two hundr ed 
years have resulted from technological 
progress, not from harder work or 
longer hours. Whether we like to 
admit it or not, most of what we 
have is produced by machines, not 
people. 



This book is an attempt to address 
some of the fundamental problems of 
income distribution and capital owner- 
ship in a society where most of the goods 
and services either are, or could be, 
produced by machines rather than people. 
It questions the adequacy of conventional 
economics for the present, as well as 
for the future. It argues that the pri- 
mary cause of the recent economic crisis 
is not a lack of resources or insufficient 
wealth-producing capacity but an unrealis- 
tic view of how wealth is created and an 
outmoded system of incentives which does 
not make use of what is available to 
produce what is needed. 



Does it not then seem odd that 
more than two-thirds of our total 
output is distributed as compensation 
to labor? Might not such a large 
discrepancy between how wealth is 
created and how it is distributed 
distort the entire structure of the 
free market economy? Consider, for 
example, that distributing the bene- 
fits of two centuries of productivitj 
increases primarily through wages 
and salaries has increased labor 
costs so high that employers cannot 
afford to hire workers even when 
there are jobs which need doing. 
Thus, we have massive unemployment 
even while: 



WEST COAST COMPUTER FAIRE 



136 



BOX 1579, PALO ALTO CA 94302 



♦Cities need rebuilding, 

*New sources of energy need to be 
developed, 

♦Pollution control needs to be 
expanded, 

♦Better health care delivery needs 
to be provided, 

♦The environment needs to be pro- 
tected and services of every 
kind need to be improved. 



in computers and manufacturing tech- 
nology suggest that mankind may be 
on the threshold of a new industrial 
revolution. Within two decades it 
may be practical for computer- 
controlled factories and robots to 
produce virtually unlimited quantities 
of manufactured goods, and to even 
reproduce themselves at continuously 
decreasing costs. 



Yet no one can afford to hire people 
to do these jobs. 

On the other hand the lack of any 

alternative to wages and salaries as a 

source of income creates such strong pres- 
sures for job security that: 

*Waste is encouraged, 

♦Featherbedding and restrictive 
work rules are commonplace, 

♦Pollution is condoned, 

♦Obsolescence is planned, 

*Mass advertising of trivia is 
considered necessary, 

*Unwise growth goes unchecked. 

And much of what people get paid 
for doing everyday in offices and factories 
throughout this land could be eliminated 
without affecting the production of goods 
or services whatsoever. 

Furthermore, even if make-work and 
waste could succeed in producing "full 
employment", there would still be millions 
of Americans outside the wage and salary 
income distribution channels. The em- 
ployable labor force makes up only about 
40 percent of the population. Thus, even 
though practically every business in the 
country could easily expand production, 
and would gladly do so if markets were 
available, the lack of purchasing power 
of people without jobs makes such expansion 
impossible. The result is that our 
enormous productive potential is never 
fully applied to our clear and urgent 
human needs. 

Rising Expectations vs. Declining Resources 

The two following charts show that 
long-term gains in productivity are closely 
correlated with investment. There is 
little reason to doubt that this correla- 
tion will continue into the future. In 
fact, recent technological developments 





DATA: 


1960-72 AVERAGES / ,• 

/ JAPAN 

LEAST-SQUARES FIT/ 




- 


/ 


UJ 




NETHERLANDS / 


UJ — 




SWEDEN • •/ 




BELGIUM*/ 


*> 6 


. 


# /FRANCE 




ITALY /• •gerhuny 


— z> 




/ 


-.,0 4 


. 


II / • M " IM 


<S £ 




/ 


zz 




us/ 


5" 2 




/SOURCE: 


< 

n 




/ NATIONAL COMMISSION ON 
/ PRODUCTIVITY (BLS DATA] 



5 10 15 20 25 30 

ANNUAL CAPITAL INVESTMENT 

{% OF OUTPUT OF ALL INDUSTRY) 

1960 - 1970 

Figure IV-4. What causes a nation's productivity to grow? This chart shows 
that countries with a high rate of investment have high productivity growth, 
and vice versa. This implies that productivity growth is not serendipitous or 
beyond human control. Instead, it is the direct result of economic policies 
which promote investments in new technology and in more efficient plants 
and equipment. 

CAPITAL INVESTMENT PER MAN-HOUR 
& OUTPUT PER MAN-HOUR (PRODUCTIVITY) 

PRIVATE ECONOMY, 1950-197* ■ 20 




CAPITAL INVESTMENT. 



1950 52 54 56 58 60 62 64 66 68 70 72 74 
SOURCE: BUREAU OF LABOR STATISTICS & NATIONAL COMMISSION ON PRODUCTIVITY 

Figure IV-5. Productivity (i.e.. output per man-hour) is closely correlated 
with the amount of sophisticated tools and capital equipment per worker. 
The data shown here, together with that in Figure IV-4 strongly imply that 
U. S. productivity could be increased by increasing the capital investment 
rate. 



Investments in such technology al- 
most certainly will produce major 
productivity gains for many decades 
to come. 



WEST COAST COMPUTER FAIRE 



137 



BOX 1579, PALO ALTO CA 94302 



Unfortunately, the present mech- 
anisms for increasing investment in high 
technology industries (such as tax credits 
for big business) serve to increase the 
already enormous concentration of wealth 
and power in the hands of a few (A U.S. 
Department of Commerce Survey of Current 
Business report on stockownership in the 
United States dated November 1974 states 
that one percent of the families in the 
U.S. owns over 50 percent of all stock 
and that 5 percent of the families own 
73.7 percent by value of all stock.), while 
leaving the majority of the population 
just as dependent on wages and salaries 
as ever. Clearly robot factories will be 
a direct threat to the economic security 
of almost every American unless some al- 
ternate means of investment financing 
and income distribution can be found. 

Peoples ' Capitalism is a proposal 
which addresses all of these issues simul- 
taneously. It offers a simple, straight- 
forward solution to each. Peoples 1 
Capitalism could be instituted in the 
United States without any changes in our 
constitutional form of government. In 
fact, far from altering any of the funda- 
mental principles upon which this country 
was founded, this plan would revitalize 
the free enterprise system, and realize 
the ideals of Jeffersonian Democracy in 
post-industrial America. 

Specifically three new institutions 
are proposed: 

1. A National Mutual Fund (NMF) 
is suggested to finance capital investment 
for increasing productivity in socially 
beneficial industries. The NMF would be 
a semiprivate profit-making investment 
corporation which would be authorized by 
Congress to borrow money from the Federal 
Reserve System. It would use this money 
to purchase stock from private industry 
for the modernization of plants and machin- 
ery and the introduction of advanced 
computer-based automation. Profits from 
these investments would be paid by the 
NMF to the general public in the form of 
dividends. By this means, the average 
citizen would receive income from the 
industrial sector of the economy quite 
independently of employment in factories 
and offices. Every adult citizen would 
become a capitalist in the sense of de- 
riving a substantial percentage of his or 
her income from dividends paid on invested 
capital. 



2. A Demand Regulation Policy 
(DRP) would be instituted in parallel 
with the NMF in order to provide 
sufficient savings to offset NMF 
investment spending. This would 
prevent short-term demand-pull in- 
flation. The DRP would withhold 
income from consumers by mandatory 
payroll deductions and convert it 
into high-interest five-year savings 
bonds. Deductions would be graduated 
according to income (low-income 
persons would have little withheld, 
high- income more) and would be ad- 
justed monthly according to a formula 
based on the best available indicator 
for inflation. The DRP would allow 
high rates of investment and the 
accompanying high employment and high 
production while preventing excess 
demand from forcing prices upward. 

3 . A Federal Department of 
Science and Technology is also sug- 
gested to focus modern technology 
more directly on problems relevant 
to human needs. 

Peoples' Capitalism is simple 
in concept yet its implications are 
truly breathtaking. 

*It offers a solution to 
recession and inflation 
simultaneously. 

Increased availability of 
investment capital would get 
the economy moving again. 
Inflation would be controlled 
in the short run by DRP 
savings , and over the long 
run by increased productivity 
resulting from higher rates 
of investment. 

*It resolves the fundamental 
conflict between economic 
growth and environmental 
preservation. 

NMF dividends to individuals 
would reduce the pressures for 
jobs and growth at any cost. 
Increased efficiency in pro- 
duction would reduce waste 
and provide the resources for 
improved pollution control 
and environmental conservation. 

*It promises a degree of individ- 
ual freedom based on personal 



WEST COAST COMPUTER FAIRE 



138 



BOX 1579, PALO ALTO CA 94302 



financial independence which is 
unprecedented even among Utopian 
proposals . 

Every adult citizen would possess 
a personal source of independent 
income. People would be econom- 
ically free to live where they 
wished and to work at what they 
enjoyed. 

*It offers a cure to poverty and 
old age security without taxing 
the rich to give to the poor. 

NMF public dividends would be 
generated by wealth producing 
capital investments. The NMF 
would be a profit-making, income- 
producing investment corporation, 
not a tax-consuming welfare 
program . 

*It achieves economic equity with- 
out destroying incentives to 
individual excellence. 

The NMF would distribute the 
profits generated by high tech- 
nology industry to everyone. 
Persons with ambition could 
afford to develop their talents, 
and society would be able, with 
clear conscience, to reward its 
high achievers. 



*It opens up an entirely new 
road to economic development 
for emerging nations which 
completely by-passes the 
social dislocations of clas- 
sical industrialization. 

In developing nations, Peoples' 
Capitalism could finance 
automated industries and 
robot factories which would 
pay dividends to farmers and 
villagers directly. Economic 
development would be achieved 
without converting the rural 
population into industrial 
workers or concentrating them 
in congested urban areas. 



PEOPLES' CAPITALISM: The Economics 
of the Robot Revolution is published 
by NEW WORLD BOOKS 

Kensington, MD 20795 

$3 . 95 paperback 

It is distributed by: 

ADVANCED TECHNOLOGY RESEARCH ASSOCIATES 

P.O. Box 456 

Minneapolis, Minnesota 55440 

and 

MARKETLINE SYSTEMS 

2337 Philmont Avenue 

Huntington Valley, Pennsylvania 19006 



WEST COAST COMPUTER FA1RE 



139 



BOX 1579, PALO ALTO CA 94302 



THOUGHTS ON TH5 PROSPECTS FOR AUTOMATED INTELLIGENCE 



by Dennis Reinhardt 

DAIR Computer Systems 
8?0 Garland Dr. 
Palo Alto, CA 9^303 
(415) 326-1534 

"... I have always discovered after the fact that, if anything, we didn»t plan big enough. 
I did not forsee the size of General Motors . .." 

- Alfred P. Sloan, Jr. 



SUMMARY 

Some of the technical problems involved 
in producing a small computer with the 
hardware capacity of the human brain 
are explored. Starting with assumptions 
differing by two orders of magnitude 
concerning the capacity of the brain 
and by 25$ for the long term growth 
rate in semiconductor chip density, 
it is hypothesized that the technology 
for manufacture of a chip or small system 
having the hardware capacity of the 
human brain can be projected for the 
period 26-48 years from now. 

THE BRAIN 

The measure which is most useful 
in comparing the capacity of the human 
brain with the capacity of the computer 
is information content, measured in 
bits or bytes. As more architectural 
information emerges from brain research, 
other more useful measures might be 
suggested. Carl Sagan (1977), quoting 
data from the work of Britten and Davidson 
(1969) has placed the information content 
of the human brain at 10**13 bits(l). 
Isaac Asimov (1963) placed the figure 
at 10**15 bits(2). Using the definition 
that 8 bits is 1 byte, we obtain estimates 
for brain capacity of 1.2*10**12 to 
1.2*10**14 Bytes (abbreviated "B"). 



Since most personal computer 
systems have 4,096 to 65,536 B of high 
speed memory with 16,384 B being typical, 
we estimate the capacity difference 
between the two, to be 7.6*10**7 to 
7.6*10**9. 

Thus, one measure of the hardware 
gap between the human brain and a personal 
computer suggests it is impossible to 
ever achieve equality. Marilyn Ferguson, 
writing about discoveries in brain research, 
states: "A computer sophisticated enough 



to handle the functions of a single 
brain 1 s ten billion cells would more 
than cover the face of the earth. "(3) 
While such a computer would be massive, 
it is not true that the surface of the 
earth would be covered. A 3330 
type disc contains approximately 300 MB 
of data and occupies about 2+ sq. 
meters, after allowance for access 
space, at a cost in the area of $50,000. 
Thus, a 1.2*10**12 B system would need 
4000 (!) disc drives and might occupy 
8,000+ sq. meters (80,000 sq. ft.) and 
cost over $200 million. More exotic 
technologies permit cost and space require- 
ments to be reduced substantially. 

Without pursuing the issue of 
todays hardware cost any further, when 
might this kind of configuration reach 
a personal computer size, contained 
on an integrated circuit or small packaged 
system? The human brain has been evolving 
for millions of years while the computer 
has existed for only a few decades. 
Considering the enormous capacity gap 
between the two, as measured by 
the ratio of their byte storage capacity, 
what are the prospects for evolution 
of the computer over the next few decades? 



HARDWARE 

It has been the semiconductor 
industry which has paced the state of 
the art in computer technology with 
the development of increasingly complex 
circuits on a single integrated circuit 
chip. The chairman of Intel Corp. , 
Robert N. Noyce, has said that "... 
the number of components per circuit 
in the most advanced integrated circuits 
has doubled every year since 1959, when 
the planar transistor was developed." 
If we were to extrapolate this rate 
of growth forward in time, we would 
have a low estimate of when "brain" 



WEST COAST COMPUTER FA1RE 



140 



BOX 1579, PALO ALTO CA 94302 



hardware could be produced. To do this 
we solve: ' 

2**N = 7.6*10**7 

for N to obtain a value for N of 26 
years. Thus, if the miniaturization 
trends of the last 18 years continue 
for another 26 years, semiconductor 
technology could be at the point where 
personal computers with a hardware 
capacity equal to the human brain in 
terms of number of bits could be produced. 

Turning to another source, the 
chairman of Texas Instruments, Mark 
Shepherd, Jr. , has presented data which 
exhibits a growth rate closer to 60# 
per year rather than 100# (5) and extrapolates 
his data forward for the next 20 years. 
If we use the 60# growth figure and 
the higher value for the ratio of brain 
capacity to today* s personal computer, 
we can project a high figure by solving: 

1.6**S - 7.6*10**9 

for S, to obtain a high value of 48 
years. In other words, we obtain a 
range of estimates for the brain computer 
of 26-A8 years, depending upon growth 
rates in semiconductor complexity and 
brain capacity used for the calculation. 

This range estimate is also subject 
to the caveat that the growth in complexity 
might slow or halt altogether, depending 
upon technical problems relating to 
ultimate physical limits, market resistance 
to processor chips which are software 
incompatible with previous generations, 
or escalating cost of the new production 
facilities. Also, neither of our quoted 
sources extrapolated the data as far 
as we have. 

Determination of the required 
word size is another hardware problem 
which would need to be solved. The expression 
for the word size using our 1.2*10**12 
Byte brain size is seen to be 
ln(1.2*10**12)/ln(2) = 40.1 bits. Evaluating 
the larger brain size yields a figure 
of 46.8 bits. Thus, about 40 to 47 bits 
minimum are needed to duplicate the 
addressing within the human brain. 
The implication for the brain computer 
is that it have a 64 bit, or similar 
instruction word length since there 
would be extra bits required in the 
instruction word for opcode, address 
mode, etc. At present, the standard 



for the personal computer market 

is the 8 bit processor. The 16 bit 

processor probably has no more than 

10# of the market. Shepherd had predicted 

the 128 KB 32 bit microprocessor for 

the mid 1980* s. If such processors become 

available at that time, it is likely 

that boards or board sets with that capability 

could be introduced sooner since the 

microprocessor chip can be developed 

independently of the memory. 



software; 

If indeed the hardware problems 
can be solved, how would the software 
for a computer of this capacity be developed? 
Using standard estimating techniques 
and assuming that those 1.2*10**12 B 
in the "brain" computer are produced 
by programmers working at an average 
productivity of 100 - 1000 instructions 
(64 bit word) per month (6), we find 
that between 12 million and 120 million 
man-years of programmer effort are required 
By way of comparison, the emergence 
of man on this planet is thought to 
have occurred less than 10 million years 
ago. Even worse, other studies suggest 
that programming effort rises exponentially 
with the size of the programming problem 
with an exponent of 1.5 (7). 

We are forced to conclude that a 
"brain" computer will never be 
programmed in this fashion. Given this 
conclusion, what relaxation of assumptions 
makes it conceivable? Certainly, one 
way it could be done is if we relax 
the assumption that all 1.2*10**12 B 
have to be programmed in by a programmer. 
For example, if the programmer were able 
to specify the first 3*10**6 B and the 
computer learned the rest on its own, then 
we have reduced the task several orders 
of magnitude. Probably none of us knows 
the number of bytes required for a computer 
to be able to organize almost all of the 
information coming into it without programmer 
modification over a period of years. None 
of us will know until someone does it. 

Even scaling the problem down to 
3*10**6 B gives software development time 
estimates between 31 and 310 man-years. 
At present, continuous speech recognition 
systems require 4.5*10**5 to 9*10**5 B. (9) 
and are running only on fairly large computers 
such as the PDP-10. An overall estimate of 
3*10**6 B implies that continuous speech 
recognition is about 10+£ of the entire 



WEST COAST COMPUTER FAIRE 



141 



BOX 1579. PALO ALTO CA 94302 



job in a brain computer, 
one knows. 



But again, no 



It might be argued that we have 
unnecessarily concentrated on programmer 
entry of algorithms when the bulk of the 
brain information might be made up of the 
"data base". This might be the crucial 
distinction between our view of automated 
intelligence and the state of the art in 
present software systems. In present 
practice, the "data base" is operated upon 
statically by the computer system. It 
makes no difference to the algorithms over 
time what the range of data entered is, how 
often it is entered, or its source. One 
unchanging computation fits all cases until 
the programming staff makes another release. 
We forsee an intelligent system modifying 
its behavior based upon the data it ex- 
periences. This means that the fundamental 
algorithms used in processing must be 
capable of evolution under the control of 
the computer itself. Part of the evolution 
can be controlled by the software manufacturer, 
but much of it must be local to the machine 
and its owner in order that the computer 
remain intelligent within its surroundings. 

Within the "hobby" subculture of the 
personal computer market, software development 
takes place outside the Confines of an indi- 
vidual's organizational affiliation. Often 
there is more creativity exhibited on one»s 
own work than in the work done for an 
employer. Furthermore, there seem to exist 
methods with lag times of 3-6 months for 
transmitting software through most of the 
hobby market. With an estimated 50,000+ 
systems sold and somewhat less actually 
operating, there exists a large pool of 
people who could participate in developing 
a "brain" computer. It is already considered 
true by some in the personal computer 
industry that it leads other, more established 
segments of the computer industry in terms of 
accomplished innovation. It seems likely 
that progress will be made in the process of 
automating the intelligence acquired by man 
and that significant contributions can 
potentially come from the hobbyists in the 
personal computer market. Already some 
products have been introduced which automate 
some human like functions with modest memory 
requirements of 8,000-48,000 B. Examples 
are isolated word discrimination (9) and 
computer controlled speech (10). As this 
industry comes to understand how to im- 
plement functions concisely, the enormous 
software cost estimates for developing a 
computer brain can be lowered closer to 
practicality. 



IMPLICATIONS 

Having considered some of the hardware 
and software development problems to be 
solved in developing the brain computer, 
let us raise an issue suggested by this 
investigation: if only the first 3*10**6 B 
of the computer are programmed and the 
remaining 1.2*10**9 B learned and organized 
by the machine, then in what sense are 
the capabilities of the machine "pre- 
destined". Well over 99# of the machine *s 
information has entered as a result of 
interaction with the environment. It might 
well be that the only practical way to 
develop a brain computer is for it to 
be self determining. 



CONCLUSION 

A personal computer with hardware 
capacity comparable to the human brain 
might be possible 26-48 years from now, 
and its near term ancestor, the 32 bit 
microcomputer can be forseen within the next 
few years, before the end of the 1980* s. 
The software does not yet exist and it is 
possible that the cost of producing it 
might be prohibitive unless we are able 
to implement innovative approaches to a 
programming effort of this magnitude. 



REFERENCES 

(1) THE DRAGONS OF EDEN: Speculations on 
the Evolution of Human Intelligence. Carl 
Sagan. Random House, Inc., 1977. 

(2) THE HUMAN BRAIN: Its Capacities and 
Functions. Isaac Asimov. Mentor Books, 
1963. 

(3)THE BRAIN REVOLUTION. Marilyn Ferguson. 
Bantum Books, Inc., 1973. 

(4) "Microelectronics". Robert N. Noyce 
in SCIENTIFIC AMERICAN, Vol. 237, No. 3, 
pages 63-69; September, 1977. 

(5) "Distributed Computing Power: a Key 
to Productivity". Mark Shepherd, Jr. in 
COMPUTER, Vol. 10, No. 11, pages 66-74; 
November, 1977. 

(6) "The Cost of Developing Large-scale 
Software". Ray W. Woverton in IEEE 
TRANSACTIONS ON COMPUTERS, Vol. C-23, No. 6 
pages 6I5-636; June, 1974. 



WEST COAST COMPUTER FAIRE 



142 



BOX 1579, PALO ALTO CA 94302 



(7) THE MYTHICAL MAN MONTH. Frederick P. 
Brooks, Jr. Addis on-Wes ley, Inc., 1975. 

(3) "An Assessment of the Technology 
of Automatic Speech Recognition for 
Military Applications:. Bruno Beek 
Edward P. Neuberg and David C. Hodge in 
IEEE TRANSACTIONS ON ACOUSTICS SPEECH 
AND SIGNAL PROCESSING, Vol. ASSP-25, No. 4 
pages 310-322; August, 1977. * 

(9) "Introducing SPEECHLAB - The First 
Vocal Interface for a Computer". Horace 
Snea and John Reykjalin in POPULAR 
ELECTRONICS, Vol. 11 No. 5, pages ^3- 
50; May, 1977. 

(10) "Friends, Humans and Countryrobots 
Lend Me Your Ears". D. Lloyd Rice in BYTE, 
issue 12, pages 16-24; August, 1976. 



WEST COAST COMPUTER FAIRE 143 BOX 1579, PALO ALTO CA 94302 



BRAIN MODELING AND ROBOT CONTROL SYSTEMS 

James S. Albus 

New World Books 

4515 Saul Road 

Kensington, Maryland 20795 



Abstract 

The inventor of the neurophysiologi- 
cal model Cerebellar Model Arithmetic 
Computer (CMAC) which won in the 1976 
Industrial Research Magazine IR-100 com- 
petition describes his work in brain mod- 
eling and robot control. CMAC demonstra- 
tes the capacity to learn, generalize, 
recognize; patterns, perform associative 
recall, compute multivarient analog 
functions and decompose input commands 
into sequences of output commands in a 
context sensitive manner. Methods of 
implementing this model on a microproces- 
sor are discussed. 

Evidence is given that clusters of 
neurons with such properties are arranged 
in hierarchies in human brains so as to 
produce AND/OR task decompositions. At 
the lowest levels in the motor system 
these clusters transform coordinates and 
compute servo functions. At middle levels 
they decompose input commands into se- 
quences of output commands which give rise 
to goal directed behavior patterns. Mech- 
anisms by which feedback can alter these 
decompositions to compensate for pertur- 
bations and uncertainties in the environ- 
ment are described. At the highest levels 
of the hierarchy are goal selecting and 
evaluating mechanisms which are used for 
planning and problem solving. 

The possibility of implementing such 
a hierarchy on a network of hobby comput- 
ers is discussed. 



Computation by Table Look-up 

CMAC is a computing device which 
accepts input variables and produces an 
output which is some function of the in- 
put variables. There may be up to twelve 
input variables which can be either con- 
tinuous or binary in any combination. 
CMAC's internal operations are entirely 
digital and its output is a digital 
number which may, of course, be converted 
to an analog voltage. 



WEST COAST COMPUTER FAIRE 



144 



CMAC computes by transforming 
each input variable into a set of 
intermediate variables which are 
combined to select a set of weights. 
These weights are then summed to 
produce an output. The CMAC output 
is thus a function of the input 
variables , and the value of the 
output for every possible configu- 
ration of the inputs is determined 
by the weights. 

The computation of mathematical 
functions by table look-up is, of 
course, a commonly used technique 
for functions of from one to three 
variables. For example, trigonomet- 
ric functions of one variable are 
often looked up in tables rather 
than computed by numerical methods. 
Particularly when combined with 
interpolation techniques, table 
look-up is a powerful tool. 

For functions of four or more 
variables, however, conventional 
table look-up becomes impractical. 

If each variable can take on Rr dis 

tinguishable values the number of 
table entries required for N vari- 
ables is R . Thus, even if each 
input variable is limited to as few 
as 16 values over its range, a table 
for storing a four dimensional func- 
tion would require 16 or 65,536 
entries. Clearly, table look-up is 
impractical for most functions 
involving more than four variables. 

CMAC, however, does not require a 
unique table entry for each possible 
input vector. Instead, CMAC maps 
each input vector into a multipli- 
city of table entries. This is il- 
lustrated in Figure 1. The value 
of the CMAC output is equal to the 
arithmetic sum of the contents of 
the selected memory locations. Now 
the number of ways a set of "a" 
elements can be selected from a 
table with "b" entries is the number 
of combinations of "b" things taken 
"a" at a time. This, in practical 
cases, is much much larger than "b". 

BOX 1579. PALO ALTO CA 94302 



Thus CMAC can utilize a relatively few 
memory locations to represent a space de- 
fined by N input variables. 

Of course, the fact that each possi- 
ble CMAC input vector selects a unique 
set of memory locations rather than a 
unique single location implies that any 
particular location may be selected by 
more than one input vector. CMAC turns 
this necessity into a convenience by an 
algorithm which operates such that any two 
input vectors which are similar (i.e.. 
close together in input space) map into 
highly overlapping sets of memory loca- 
tions as shown in Figure 2. 

This gives CMAC the property of 
generalization, i.e., CMAC tends to pro- 
duce similar outputs for similar inputs. 
In Figure 2, input vector S> 2 selects 
three out of four of the same memory loca- 
tions as Si- Thus, the output h(S2) will 
be similar to h(Sx) differing only by 
the contents of the single location which 
is not in common. 

The amount of overlap between sets 
of selected memory locations is controlled 
such that as the input space distance 
between two input vectors increases the 
amount of overlap decreases. Finally, at 
some distance the overlap becomes zero 
and the sets of selected memory locations 
are disjoint. At that point input S 2 can 
be said to be outside the neighborhood 
of generalization of Sx . The value of 
the output h(S2) is thus independent of 
h(Si) . 

An example of a neighborhood of 
generalization of CMAC can be seen in 
Figure 3. In this example, the input 
vector consists of two input variables 
s^ and S2 with range 0<sx^360 and 
0-cS2<:180. There is unity resolution along 
each" 1 variable axis so that R is 360 for 
S-. and 180 for s 2 . In Figure 3. 32 
weights are selected for each input vector, 
and thus any two input vectors which dif- 
fer by only one resolution elements will 
have 31 weights in common. Not until two 
inputs are at least 32 resolution elements 
apart do they map into disjoint sets of 
weights. If the weights are initially all 
zero, the value 1 can be stored at some 
point such as S x = (90,90) by placing 
1/32 in each of the 32 weights selected by 
St. Following this operation one will 
find that a second input vector S2=(91,90) 
will produce the output 31/32. This is 
because S2 shares 31 weights with the 
vector Si. A third vector S3=(92,90) or 



t s 



ace 

ned 

to 



(S 4 = (90.92)) will liiivo an output 
30732 because oi sharing ISO weig 
with Sj_ . etc. The result is t ha 
the CMAC memory generalizes. Ad 
jacent memory locations are not 
dependent, and a plot ot values 
stored at each point in input sp 
shows the appearance oi a stretc 
rubber sheet. Pulling owe point 
a particular value, as in Figure 
affects adjacent points. 



Generalization has the distinct 
advantage that training- (or data 
storage) is not required at every 
point in the input space. Training 
on a suitably representative subset 
of input vectors is adequate. For 
example, if one wishes to store the 
function sin(s 1 ) sin(s 2 ) to a resol- 
ution of one degree in a convent iona 
memory, data would have to be stored 
at each of the 360X180 (more than 
64.000) possible inputs. In Figure 
4. data was entered at only 175 
input points scattered over the 
input space and the tendency of the 
memory to generalize fills in the 
gaps. 

Of course, generalization is 
disadvantageous if radically dif- 
ferent outputs are required for 
highly similar inputs. In most 
control problems however, such dis- 
continuities do not obtain. Indeed 
most control functions have simple 
S-shaped characteristics along each 
variable axis. The complexity of 
control computation in multivarient 
systems typically derives from cross- 
products which effect the slope of 
the function, or produce skewness . 
or non-symetrical hills and valleys 
in various corners of the N dimen- 
sional space. As can be seen from 
the function shown in Figure 6 these 
are the type of functions which 
CMAC can readily store and hence 
compute. 

A Neurophysiological Model 

A neurophysiological theory 
upon which CMAC is based was devel- 
oped independently in England by 
David Marr and in America by the 
author. It a/as published first by 
Marr in 1969\ The cerebellum had 
for some years been known as one 
of the areas in the brain respon- 
sible for controlling the limbs, 
hands, eyes and fingers in rapid. 



WEST COAST COMPUTER FAIRE 



145 



BOX 1579, PALO ALTO CA 94302 



precise, coordinated movements. It was 
known to receive neural input from motor 
areas of the cerebral cortex as well as 
feedback signals from the muscles, joints 
tendons and skin. Marr and myself inde- 
pendently combined this knowledge with 
new information from an elegant series c :' 
experiments by Eccles. Ito and Szenta- 
gothai^ into a theory of how these input 
signals act through the various cellular 
interconnections to produce outputs with 
appropriate values. The result was a 
theory of how conditioned reflexes could 
be stored and recalled (i.e., computed). 
This theory has rapidly become one of the 
most widely accepted working hypotheses 
among cerebellar neurophysiologists . 

The CMAC formalism not only gives 
mathematical structure to the original 
Marr-Albus theory but suggests analytic 
procedures by which electronic circuits 
with similar properties can be synthesized. 

For example. CMAC first transforms 
the single precise value of each input 
variable into a multiplicity of less 
precise values on a set of intermediate 
variables. This is analogous to the 
function accomplished by sensory end 
organs in biological systems. in the 
body, the angular position of a joint, 
the tension in a tendon, the velocity of 
contraction of a muscle, are all precise 
physical parameters each of which is en- 
coded by a multiplicity of sensory organs 
into firing rates on neuron axons which 
are relatively imprecise information chan- 
nels. CMAC emulates this in the S-*M 
mapping by which the value of each vari- 
able in the input vector S = (sj_,S2 ,S3, . . . 
sn) is transformed into a set of inter- 
mediate variables. 

Figure 5 illustrates the essential 
characteristics of the S* M mapping. In 
this illustration the two input variables 
s^ and S2 are represented with unity 
resolution on the range to 16. The 
range of each input variable is also 
covered by four intermediate variables 
of lower resolution. 

In Figure 5, s^ is mapped into a set 
mi composed of four intermediate variables. 



mi 



'1 * 2 ' 3 ' 4 " 



where 



Cx = (A, B, C, D, E) 

C 2 = {F, G, H, J, K) 

C3 - -M, N, P, Q, R- 

C4 = -S, T, V, W, X- 



For every value of sj_, there 
exists a unique set of elements m^* 
one from each set of intermediate 
variables in m^ . such that the value 
of Sj uniquely defines the set mi* , 
and vice versa. For example, in 
Figure 5 the value s-^7 maps into 
the set m 1 *--B. H, P. V- and vice 
versa. Similarily. the value 32=10 
maps into the set ni2*= - c. j. q. v. . 
and vice versa. 

In the cerebellum, incoming 
sensory neurons enter the granular 
layer where they make contact with 
granule cells. A system of negative 
feedback regulates the overall 
activity of the granular layer so 
that a small and relatively fixed 
percentage of the granule cells are 
allowed to become active. This is 
stimulated in CMAC by the combina- 
tion of intermediate variables to 
select a set of weights . For the 
example in Figure 5, the set m-,* = 

B, H, P. V and m 2 * = c , j, q, v. 
combine to select the" set of weights 
-Be. Hj , Pq, Vv- . 

Finally, in the cerebellum 
the Purkinje cell sums the influ- 
ence of the active granule cells 
through a set of weighted synaptic 
connections. Similarly in Figure 5 
CMAC sums the selected weights. 



Be 


= 


1 





Hj 


= 


2 





Pq 


= 


1 





Vv 


= 








Sum 



4.0 



Thus, the input S=(7, 10) 
produces the output h(S)=4. The 
particular set of weigh~ts shown in 
Figure 5 defines the function in 
Figure 6. 

At every point in input space, 
four weights are selected whose sum 
is the value of the output. As the 
input vector moves from one point 
in input space to an adjacent point, 
one weight drops out to be replaced 
by another. The difference in 
value of the new weight minus the 
old is the difference in the value 
of the output at the two adjacent 
points. Thus, the difference in 
adjacent weights is the partial 
derivative (really the partial dif- 
ference) of the function at that 
point. For example, in Figure 5, 
if the input vector moves from 



WEST COAST COMPUTER FAIRE 



146 



BOX 1579, PALO ALTO CA 94302 



S-(7. 10) to S (8. 10) the weight Be 1.0 
drops out and is replaced by Cc=2 t 0. The 
value oi' the output thus changes from 4 
to 5. 

CMAC provides a mathematical t'or- 

moliam whi/ili ic citnnlo vdt nrppi<!P iinri 

which accurately reflects the functional 
properties of a cerebellar output cell 
and its associated interneuron network. 
Furthermore, the CMAC formalism is suf- 
ficiently general that it can be said to 
closely approximate the functional proper- 
ties of output neurons and their associated 
interneuron nets in a large number of cor- 
tical regions and subcortical nuclei. A 
multiplicity of CMAC's can functionally 
simulate large sections of cortex and 
entire processing nuclei. CMAC thus pro- 
vides a mathematical tool which may be 
applied to analysis of sensory-motor sys- 
tmes in many different areas of the brain. 

Input to CMAC is a vector which 
defines an N dimensional space. At any 
instant of time the input vector defines 
a point in input space. If any one of the 
input variables (component of the vector) 
is time dependent then as time progresses 
the input vector moves through space de- 
fining a trajectory. We can now speak of 
an input trajectory through N dimensional 
input space. At any instant of time CMAC 
accepts an input vector and produces an 
output which is a scalar. A multiplicity 
of CMAC's produces an output vector. 

Thus, for a cell nucleus represented 
by a multiplicity of CMAC's. at any in- 
stant of time there exists a one-to-one 
mapping from each input point (vector) in 
input space into an output point (vector) 
in output space. And correspondingly for 
every input trajectory there is an output 
trajectory. 

Let us now explore how these basic 
CMAC concepts can be applied to the sub- 
ject of higher level behavior such as is 
required in the performance of a behavioral 
sequence, or task. 

A Sensory-Motor Hierarchy 

Simply stated, any task can be 
broken down into subtasks in a hierarchical 
way until finally at the bottom of the 
hierarchy there are action primatives such 
as motor neuron firing rates. This hier- 
archical decomposition of complex tasks, 
or behavior, is not new having been sug- 
gested many times by workers in behavioral 
psychology, linguistics and various other 
fields such as military command and con- 
trol, and manufacturing engineering. The 



entire cor.cept of mass production 
is based on the principle of break- 
ing down the task of making a pro- 
duct into a series oi elemental 
operations which are so simple that 
they can be taught to low-skilled 
workers in a short period oi time. 

Task decomposition immediately 
suggests a control hierarchy where 
each level in the hierarchy accepts 
input commands (or tasks) from the 
next h.igner level and responds by 
issuing ordered sequences oi output 
commands (or subtasks) to the next 
lower level. In extremelv simple 
cases these sub task generators may 
merely produce sequences of pre- 
recorded outputs. But m more com- 
plex systems sensory teedback from 
the environment, or from the 
system being controlled, may alter 
the output sequences in one way or 
another. Sensory feedback may 
consist of interlock signals to 
provide sequential tuning, or may 
incorporate any number oi analog or 
digital variables which modify the 
transier function of the subtask 
generator . 

Suppose, for example, that 
the goal is to program an industrial 
robot to assemble a gasoline engine 
This task can be broken down into 
sequences of simpler tasks such as 
fetch parts a and b. insert a into 
b while nulling off-axis forces, 
fasten part c to assembly ab and 
so on. Each of these tasks can be 
broken down further into sequences 
of elemental movements such as 
reach, grasp, follow specified 
trajectory, etc. These elemental 
movements can themselves be broken 
down into sequences of positions in 
physical space. Finally, each 
point along the physical trajectory 
can be transformed into a coordinae 
system defined by the physical 
structure of the robot and its 
actuators. This concept is illus- 
trated in Figure 7. 

At each level in such a 
hierarchy there are two types of 
input. First there are input com- 
mands from a higher level. At the 
very top these may come from the 
shop foreman or from a production 
planning and scheduling program. 
At all other levels, commands 
originate as outputs from higher 
levels in the hierarchy. 



WEST COAST COMPUTER FAIRE 



147 



BOX 1579. PALO ALTO CA 94302 



Each hierarchical level also 
receives feedback signals which report the 
position and motion of joints or convey 
information from sensors monitoring force, 
vouch, or visual position of objects in 
'.he environment. In some cases this feed- 
oack is used for timing purposes in order 
to coordinate sequences of actions with 
conditions in the environment. Feedback 
may also indicate the recognition of pat- 
terns of events, or shapes and locations 
of objects iv the environment, or even the 
movement of coordinate systems and frames 
of references. Particularly at the higher 
levels in the hierarchy, feedback is 
highly processed through many layers of 
an ascending hierarchy of CMAC like pro- 
cessing nuclei . 

In biological systems as well 
there may be a sensory-data processing 
hierarchy, which runs parallel to and in 
the opposite direction from the motor- 
vehavior generating hierarchy. This pro- 
cessing hierarchy receives input at the 
lowest level directly from sensory trans- 
ducers. At each level input vectors (and 
trajectories) are transformed into output 
vectors (and trajectories). These out- 
puts are then passed on to the next higher 
level as inputs. The purpose of each 
processing module is to transform input 
vectors into output vectors which are 
optimally configured to serve as feedback 
to the motor-generating hierarchy at that 
level. We can therefore hypothesize a 
feedback link from each level in the 
sensory-processing hierarchy to corres- 
ponding levels in the motor-generating 
hierarchy. 

Furthermore the efficiency of the 
sensory-processing hierarchy is enormously 
enhanced if there are complementary links 
from the motor-generating hierarchy to 
the sensory-processing hierarchy. This 
type of information pathway is what neuro- 
psychologists call an "efference copy." 
This information tells the sensory pro- 
cessing hierarchy what the body is doing 
so that, among other things, it can dis- 
tinguish sensory data resulting from 
movement of the body from sensory signals 
resulting from movement of objects in the 
environment of the eyes and a rotation of 
the room about the eyes. More generally, 
it enables the processing system to per- 
form context sensitive filtering, and 
indeed, to do predictive filtering. 

It is, of course, possible to 
turn off the lowest level of the motor 
hierarchy without disabling the entire 
processing-generating hierarchy. When 
in this mode, the generating hierarchy 



can be used to produce signals which 
facilitate the operation of the 
sensory-processing hierarchy. Activ- 
ity in the generating hierarchy may 
now be better characterized as hypo- 
theses, instead of tasks and sub- 
tasks. Sensory input from the 
environment is now analysed in con- 
junction with hypotheses from the 
generating hierarchy. If the hypo- 
theses are correct , they will assist 
in sensory recognition. If only 
nearly correct they can be "pulled" 
by feedback from the processing 
hierarchy. When a particular hypo- 
thesis is successful in generating 
predictions which match incoming 
sensory data the entire processing- 
generating hierarchy "locks on" to 
the incoming sensory data. This gives 
the hierarchy the ability to recognize 
and track lengthy sequences of input 
signals even in the presence of noise 
and interference from similar signals. 
This lock-on phenomenon at several 
levels gives the hierarchy the 
ability to recognize phrases and 
patterns with several different, but 
harmonious, periodicities. For 
example, the affinity of the ear for 
rhythmic patterns of music and 
poetry may arise from synchrony in 
hierarchical looping structure such 
as shown in Figure 8 where each of 
many different loops locks-on to 
rhythmic patterns at its own level. 
The cross-coupling in the sensory- 
motor hierarchy suggests a mechanism 
for the strong tendency of people 
to dance, or tap their feet in time 
with rhythmic sounds. The muTti- 
plicity of levels in the hierarchy 
suggests a mechanism for simultan- 
eously locking-on to many different 
levels of rhythm and "meaning" in 
both speech and music. 

Belief and Understanding 

One may hypothesize that in humans 
the functional relationships stored 
in upper levels of the cross-coupled 
hierarchy of sensory-processing 
behavior-generating modules makes up 
what might best be called a "belief 
structure" which gives rise to goal- 
directed behavior. By definition the 
belief structure is isolated from 
direct contact with the motor-output 
sensory-input levels. This enables 
the belief structure to decouple it- 
self from outward manifestations of 
behavior as well as from direct 
physical sensations of the external 
environment. It is thus free to 



WF«!T TOA^T rOMPIITFR FAIRF 



148 



BOX 1579. PALO ALTO CA 94302 



generate hypotheses, and imagine the con- 
sequences. It can send hypothetical goals 
to the mid-levels of the generating 
hierarchy which cycle through an imagined 
task, thereby stimulating the sensory- 
processing hierarchy into producing a 
facsimile of expected (or remembered) 
sensory experiences. These self -induced 
sensory feedback signals generate emotional 
reactions good, bad or neutral and these 
steer the highest level goal selecting 
mechanisms toward command vectors which 
produce rewarding emotional feedback. 

Thus , a person selects goals and 
plans actions on the basis of what is 
stored in the transfer functions of his 
or her belief structure, i.e., the mid 
and upper-levels of the processing- 
generating hierarchies. 

Similarly, a person interprets 
sensory experiences according to what is 
stored in the belief structure. People 
tend to see and hear what they expect to 
see and hear. They tend to interpret 
unfamiliar sensory input as "just noise" 
or without "meaning." Sensory experiences 
which correlate with patterns stored in 
the belief structure are reassuring and 
comforting. The world becomes predict- 
able and presents few surprises, i.e., 
we "understand" and events "have meaning." 
Unexpected twists in familiar patterns 
elicit surprise, and systematic deviations 
from expected trajectories may cause 
relearning and the establishment of new 
trajectories of expectation. Sensory 
experience which does not correlate with 
stored patterns is disturbing and is 
rejected or avoided. If such stimuli 
cannot be avoided and if it is too un- 
familiar or unpredictable to be reinter- 
preted through learning, then it may 
produce emotional distress, or neuroses. 

A processing-generating hierarchy 
of CMAC modules thus provides a simple 
unifying structure which can be applied 
to a wide range of sensory-interactive 
goal-directed behavior including the 
selection of goals, the planning of actions 
the imagining of results, the learning 
of motor skills, recognition of sensory 
patterns, and the construction of habits 
and beliefs. The fact that the basic 
building blocks for such hierarchies can 
be fabricated inexpensively with presently 
available technology suggests that it may 
now be reasonable to seriously address the 
feasibility of constructing machines with 
these properties . 



Each CMAC module is an independ- 
ent computing device. It accepts 
input variables, performs its compu- 
tations, and transmits its output. 
Each module is trained, or program- 
med, to compute a relatively simple 
function of many variables. Training 
begins at the lowest levels first and 
must be well underway at each level 
in the hierarchy before it can begin 
at the next higher level. Just as 
in a child the abilities to deal with 
abstractions do not develop until 
after visual processing and motor 
coordination is accomplished, and the 
ability to read does not emerge until 
speech generating and recognizing 
have been developed, so in a CMAC 
hierarchy training must be well 
advanced at each level before con- 
sistent and clearly defined trajec- 
tories emerge to be used as feedback 
for the next higher level. 

Networks of CMAC modules compute 
in parallel and control is distri- 
buted throughout the network in a 
manner very similar to the neural 
networks of the brain. The addition 
of new computing elements at each 
level serves to refine the precision 
of the computed output at that level. 
The addition of new levels in the 
hierarchy increases the complexity 
of the behavior which can be gener- 
ated and the sophistication of the 
sensory processing which can be 
performed. 

These properties suggest that it 
may be possible to implement a CMAC 
hierarchy for controlling a robot 
on a network of microcomputers , and 
to systematically increase the 
sensory-motor capacity by incre- 
mentally adding additional modules 
to the network. If the model sug- 
gested here is correct, the result 
may be that intelligence will evolve 
in a silicon and copper network in 
much the same way as it did in bio- 
logical brains. 



WEST COAST COMPUTER FAIRE 



149 



BOX 1579. PALO ALTO CA 94302 



"\ 



References 

tMarr, D. , "A Theory of Cerebellar 
Cortex," J. Physical, London, 202 , 
1969, 437-470 

Albus, J., "A Theory of Cerebellar 
Function," Math. Biosciences, 10 , 
1971, 25-61 

. "A New Approach to Manipu- 
lator Control: The Cerebellar Model 
Articulation Controller (CMAC)," 
Journal of Dynamic Systems, Measure- 
ment and Control, September 1975, 
220-227 

. "Data Storage in the Cere- 



bellar Model Articulation Controller 
(CMAC)," Journal of Dynamic Systems, 
Measurement and Control, September 
1975, 228-233 

.Eccles, J.C., M. Ito, and J. 
Szentagothai, "The Cerebellum as a 
Neuronal Machine," Springer, Berlin, 
1967 

It is impossible in such a brief 
paper to properly acknowledge the 
source of all the ideas presented. 
A much more complete bibliography 
is contained in each of the above 
sources . 



WEST COAST COMPUTER FAIRE 15 ° BOX 1579, PALO ALTO CA 94302 



*~ 



-@K 





























































n 



































































CM 
LU 
ff 

3 





UJ 

3 
O 




ill 
CC 

3 
O 




CO 
UJ 

K 

3 
O 



WEST COAST COMPUTER FAIRE 



151 



BOX 1579, PALO ALTO CA 94302 





UJ 
QC 

3 
CD 



00 
UJ 

DC 

CD 
uZ 



in 

UJ 

QC 
D 
CD 



o 

UJ 
CC 

3 
CD 



*» <» ** t » r ^ 



e * 
SI 

»s 





.f * "* * £ ^ ~ 2 



WEST COAST COMPUTER FAIRE 



152 



BOX 1579, PALO ALTO CA 94302 



bv 

M i * e y i i r e r 
920 r-pnnis ~rive, Falc Alto, CA ?4303 



iiisti S£ ^ 



ar 
so 

th 

■IS 

to 
to 

".0 

po 

ho 
oe 

ha 
id 
vn 
fo 



/aricus asoactr: of trio 

e discussed. The ^npha^i 

much to expose the desi 

e motivation behind var 

3 3 C t S . The pfSn^lp"! 1 t 

be that th-? ^C^-T eiubodi 
'.saxiraize the accession 
mmunication techniques to 
ssiole segment of t 
bbyist community. On the 
oole having enhanced p 
r 1 w a r e or software can 
van tag? of their advanc 
en they use the use POT 
r their communication. 



?CN£T lesion 
s h*re is not. 
gn as to show 
ions of it^ 
heme is shovn 
es an attemot 
i ty of useful 

the broadest 
he computer 

other hand, 

OHt?r in their 

ta*e good 

ed facilities 

T techniques 



the 



cy?T 

[*'e r. t 



0?ve Jaulxins organized 
r o.Tiir.ittea shortly after the First 
Coast Computer raire last year; its goal 
was to tuiid a personal computer network 
(whence its nan:e). s ftar a few n-onthr 
of lively debate, it produced a design, 
wnich v?a? subsequently implemented f iv 
test purposes. ?h° design was then 
disassembled an 1 reconstructed in such a 
wav ^»s to orofit from the experience of 
the first iteration. The second 
veneration d^si^n is no* quite stab! 3 
and is beginning to generate some second 
generation test results. at this 
juncture, then, it could perhaps b» 
instructive to consider various aspects 
of the design and see just vhy they 
turned out the way they did, 

2. rae._£tourid_liilp£ 

The design of the PCNET Proceeded *rorc a 
lumber of ground rules. 



3. The network should oe cheap and 
reliable. Then Deople would he 1 ikelv 
to freely share larce files and large 
nunbers of substantial programs. If 
they nave confidence in network 
communication, they will be tempted to 
use it casually to spread the word of a 
good program, an interesting new idea or 
a reliable merchant. 



sue 
com 
i nt 
rai 
ani 
oar 
axp 
a dm 
vii 
of 



The net wo 
h as lea 
outers. T 

operation 
s e or a i<n 

it can beg 
t icipants 
endi ture. 
inistration 

1 1 Lkely he 
its partici 



rk should own no 


hardware^ 


sed lines cr 


service 


hen, the network 


can coma 


without any nece 


ssity to 


inister substanti 


al funds, 


in operation with 


too few 


to justify 


a large 


Also, w i *■ h the 


netvork 


highly iecentra 


iized, it 


resDcnsive to the -needs 


:> a n t s . 





?. Permanent service nodes will not oe 
needed but will be accommodated if 
oresent. 411 tne above arguments for 
decentralization also apply to this 
ground rule. However, permanent service 
nodes, such as the CTK's I've described 
elsewhere, can eliminate very strong 
incentives for specialized hardware that 
will enable nodes to automatical ly 
handle incoming traffic. 

1. There should be no geographical 
restrictions. For example, the PCHr'T 
should be suitable for communication 
across national boundaries. 

5. The PC^f-T snould accommodate remote 
/irtual terminals. This will allow 
oeople to test a program without having 
gone to the trouble of importing it and 
adapting it to a new home. This 
feature, whil*> not yet explicitly 
includes, has shaped some p^rts of the 
design. 



WEST COAST COMPUTER FAIRE 



153 



BOX 1579, PALO ALTO CA 94302 



*• uSKSiS-fll.ltlSliaCtlbo 



*. 22mi_2Lli£i_2asia[i_Is2uss 



The PC.^tT specification uses a number The f 
of levels of abstraction to describe the block: is 
transmission of mail and fiJes between between b 
net-work noias. Two network nodes will that the 
tyoically be connected rv a phone line, applied t 
Thpy use models tc s^nd digital bits in put onto 
*he form of t.h- au :, io tones suitable for to great 
teleohona circuits. These bits serve in the error 
their turn to serially transmit binary leads to 
3ata in 8-bit bytes, (tfodes usinrr 5-bit woul* be 
serializers or that for other reasons 
cannot directly transmit 9-bit bytes use 
a radix-4l scheme to represent binary 
data with a restricted set of 41 
characters.) These bytes are organizad 
into transmission blocks containing 
*»rror correction information sufficient 
to provide transmission (at very low 
*rror rates) for several streams of 
bytes. One stream is devoted to 
information used to control the 
Tonmunication at this level and the 
previous ones? the other streams 
transmit messases between the server 
levels of the nodes. Finally/ these 
«essag*s transmit nail and files between 
two nodes, with forwarding automatically 
Provided wnen appropriate. 



ormat 

inde 

inary 

radi 

c a co 

the li 

ly re 

detec 

a si 

raquir 



of 
pende 
and r 
x-41 
rap] «t 
ne. 
duce 
tion 
mpler 
ed ot 



a link 
nt of 
adix-41 

transf 
a block 
This do 
the eff 
informa 

implem 
herwise 



transrai ssior 

the choice 

in the sense 

ormation is 

before it is 

es not seem 

ectiveness of 

tion/ and it 

entation than 



Noise on the phone line can cause the 
receiving 'JAKT to lose synchronization 
with the incon.ing byte frames, 
completely turning the received data 
into garbage until synchronization is 
again established. We assume that the 
error detection information in a 
transmission block will have no trouble 
detecting any such garbage. Tn an 
attempt to limit the damage to single 
transmission blocks, they are separated 
by characters chosen for their utility 
in helping the receiving UART come back 
into synchronization with the byte 
frames. 



Th 
rigor 
then 
ilstu 
af th 
in th 
and 

rfhate 

lower 

the i 

>hon*> 

>rovi 

»ven 

3ff ec 

token 

Juple 

level 

trans 



ese level 
ously sepa 

may be 
rbance to 
is modular 
e way the 

straight 
ver on tra 

levels of 

nterface b 

1 ine m 

sion to a 

originate 
t on the o 
, the mod 
x or full 
effected 
mission bl 



s of speci 
rated, so 
changed with 
the others. 
ity has 3lre 
choice betw 
binary ha 
nsmission a 
abstraction 
etween the m 
ay or way 
utomatically 
) phone ca 
ther levels. 
em (and UART 
duplex, a 
is tha* 
ocks. 



Thl 
allow 
advant 
exarapl 
repiac 
having 
the 

Char3c 
also 
serve 
in ano 



s separ 
the PC 
age of 
e, the 
ed by ra 
the del 
usual 
ter-at-a 
be adde 
as a vir 
ther nod 



a t i o n 
NaT t 
new 
teJep 
dio li 
ays th 
satell 
-time 
d, so 
tua) t 
e. 



betwee 
o grac 

develo 
hone 1 
nks or 
at are 
ite c 
inter 
that 
erminal 



fication are 

that any of 

little or no 

An example 
a ly been seen 
een radix-41 
s no effect 
t higher or 
Similarly, 
odem and the 
not include 

answer (or 
lis with no 

By the same 
) can be half 
nd the only 
handling link 

n levels will 
efully take 
pments. For 
inks can be 
even by links 
inevitable in 
omraunication. 
actions can 
one node can 
to programs 



Ke had originally assumed that the 
boundaries of the link transmission 
blocks and the stream blocks would be 
entirely independent; we soon 
discovered, however, that such 
independence could require a general, 
coroutine capability in the 
implementation. In order to maximize 
the 3CcessibiTity of Tlie PCNETT to tWe 
hobbyist community, we made it possible 
to negotiate the independence of . the 
boundaries at those two levels. In 
addition, the default choice of that 
option is to align the boundaries so 
that coroutines are never required. 



The tension 
more highly c 
escape notice 
with its largel 
and more high 
transmission bl 
levels handle 
messages, so 
correspondingly 
lower levels, 
message server 
are more likely 
expanded and so 
whose meanings 
the oeople main 



between symbolic data and 
oded data can scarcely 

in a system like PCNET, 
y symbolic message header 
ly coded stream and link 
ock headers. The lower 

blocks much smaller than 

header compactness is 

more important at the 

Programs implementing the 

level, on the other hand, 

to have thetr functions 

are more in need of data 
are easily discerned by 
taining them. 



WEST COAST COMPUTER FAIRE 



154 



BOX 1579, PALO ALTO CA 94302 



Sizarre though it may seem, PCKFT 
messages probably vill normally be sent 
from tfteir source lirectly to their 
destination or to a snail drop n*»ar the 
iestination. That is, they will 
orobably only rarely be sent through a 
lumber of internediate nodes on their 
rfay to their destination. (The reason 
is a simple economic one: the late night 
:>hon» rates are low enou7b and 
independent enough of distance that 
relaying doesn't seem worth the bother.) 
^wever, the PCNST specification is 
organize:? in such a way that either mode 
can be used, that any mixture of the 
nodes can he in use at any moment/ and 
that the choice can be made 
independently by the sender each time it 
attempts to send a message, in case the 
first few attempts fail. The crux of 
the matter is that the connection from 
the original source of a message to its 
ultimate destination can be a simplex 
(i.e., one-way) connection, aven though 
the connections at lower levels must be 
at least half duplex. 3n the other 
hand, there is nothing to orevent the 
original sender and the ultimate 
destination from having a full dual ex 
connection; in fact they can profit from 
having such a connection if they have 
one. 



The PCNET is 
capriciously 
network partic 
too: successful 
can be verifi 
destination al 
original source 
of the original 
of intermediate 
the transmissi 
their needin 
responsibility 
transmission b 
Since interais 
nominal respons 
they handle, t 
a streamlined 
considerable r 
spontaneous dis 



largely immune to nodes 

entering and leaving 

ipation in another way 

transmission of messages 

ed from the ultimate 

1 the way back to the 

(This is at the option 

sender.) Thus, a series 

nodes can participate in 

on of a message without 

g to accept any 

for ultimately successful 

etween the end points. 

diate nodes have only 

ibility for the traffic 

he PCNET should gain both 

administration and 

esistance to any possible 

appearance of nodes. 



s « l2Q£lUS.iOQ£ 

The ?ao st 
throughout th 
naximize its ac 
as possible a 
community. A 
that the desi 
that are inclui 
oe i nip lea; ant a 1 
is also structu 
sinple iniplen-? 
reliable. On t 
highly saeciali 
available or th 
sophisticated 
requirements, 
structured in 
advanced facil 
deliver increa 
user. The desi 
the addition of 



which ker- 
~D*raittee. 



i sic or t a p. t consideration 
e "CN£T ort.sign is to 
cessibi! ity to as bro*- 1 

segment of the hobbyist 
consequence of this i? 
gn his soecial f eaturp.s 
^d just so the design can 

simply and cheaply. It 
red in such a way that 
ntations will tend to b-» 
he other hani, when mor? 
zed cr costly hardware is 
e software can be mor-» 
than the rcinimuni 
the PCNET .iesicn is 
such a way as to put the 
ities to good use ani 
sed performance to the 
^n also leaves room for 
nev features, not all 0* 
r e s e e n b v the P c n 7 " 



5. ici^noaiaijaffisals 

Some of the opinions expressed in 
this paper are lay own. However, the 
vast majority of the ooinions, 



conclusions 



ari 



observations 



incorporated here w»re developed wholly 
or jointly by the members of the PCNET 
Committee. Hoping to find a reasonable 
middle ground between the folly of 
avaluatinq the work: of others and the 
arrogance of leaving their contribution 1 ; 
unacknowledged, 1 feel compelled to say 
that I found most memorable t s e 
contributions of Oave Caulkins, ?on 
Crane, Peter Deutsch, fr'arc Kaufman and 
Robert Maas. 

7 - Sifeli22£a2tiiial»&«lsiiac.2£ 

CI J. Oav*d Caulkins, "?esi-7n 
Considerations for a Hobbyist Coniouter 
Vetwork", Proceedings of the First Vest 
:oast Computer Paire, Palo Alto, 1977. 

C?l. Mike wilber, M A Network o* 
Community Information Exchanges: Issues 
and Problems", ?roc=edinas of the First 
West Coast Computer 'vaire, 3 alo Uto, 
1977. 



WEST COAST COMPUTER FAIRE 



155 



BOX 1579, PALO ALTO CA 94302 



Communication Protocols for a Personal Computer Network 

Ron Crane 
2101 Calif. St. #326 Mountain View, Ca. 94040 



This paper summarizes the design requirements and 
architecture of a layered set of communication 
protocols for personal computers. Also included is 
the current state of development of this evolving 
set of protocols. A detailed description of the 
protocol will appear in the future. 

The Environment of Computers 

The introduction of low-cost minicomputers in the 
1960*s reduced the minimum size of an application 
for which automation was justified. The single 
chip microcomputer is making an equally 
significant step in the 1970's. Private individuals 
are purchasing small machines or terminals for 
their own use, in addition to businesses for 
applications such as accounting, order handling, 
and text editing. Small, medium, and large size 
computers are becoming widespread. 

More and more machines are being dedicated to 
uses which involve transactions of some kind 
(editing text, mail, or programs ultimately sent to 
other individuals, doing accounting for transactions 
between buyers and sellers, etc.). The machines are 
used to create, modify, or process information 
which is then printed on paper or recorded on 
magnetic media which is then carried to its 
destination where it is often entered into another 
machine. This represents a growing environment 
in which machines are communicating with other 
machines, but with the transport time from one 
mac hi ne tn another compr ising a significant part 
of the total elapsed time for processing. The need 
exists for low-cost, quick, and direct machine-to- 
machine communication between an increasingly 
widespread base of machines. 

The requirement of providing communication 
between any of a large number of machines implies 
some form of large and widespread communication 
network. To be a viable replacement or adjunct to 
physical transportation schemes presently used, the 
network must be available and relatively 
inexpensive. The only system currently available 
that is both widespread and has a very low 
minimum monthly charge is the dial telephone 
network. 

For machines to communicate using the telephone 
network, they must be able to communicate both 
with the telephone system and through the 
telephone system to the distant machine. Once two 
machines have been connected via the telephone 
system, they must communicate with each other. 
This communication must take place on several 
levels. Modems communicate using a standard set 
of frequencies, the serial interfaces in each of the 



computers must transmit and receive bits in the 
same order and at the same speed, and the software 
in each of the machines must agree upon the 
meaning of various bit sequences so that 
information is transferred instead of a meaningless 
sequence of bits. A common language or 
communication standard is essential for widespread 
machine communication. 

Personal Computer Network (PC Net) Protocols 

The PC Net protocols come from the PC Net 
committee which is a group of computer 
professionals who banded together as the result of 
the personal computing network session at the First 
West Coast Computer Faire in 1977. 

The PC Net protocols are layered into 5 functional 
levels. Two of the levels specify hardware while 
the remaining three specify software. Every 
machine must implement the basic or core 
protocol. Extra capabilities may also be 
implemented on various machines. The 

compatibility of two machines with respect to extra 
capabilities is ascertained on a per call basis via the 
core protocol, as is the decision to use one or more 
of the capabilities during the call. Thus, any two 
machines can always communicate with each other 
on a very simple level, even though some will find 
that they have few common interests after a brief 
interchange. 

The figure on the following page illustrates the 
~ hferarchicat structure of the proposed standards. 
Five levels comprise the standard (protocol). 

Level 1 

Level 1 specifies how the node (personal computer) 
interfaces to the telephone network. Both 
supervisory signals (dialing) and the modem 
signalling frequencies are specified. Bell 103 
compatible modem frequencies were selected 
because of wide availability and relatively low cost. 
When faster units become desirable, this level of 
the protocols can be changed without affecting the 
other levels. In the figure, RS232C and RS366 are 
mentioned as often-used interfaces to modems and 
auto-dialers. These are not part of the standard, 
however, since neither interface can be seen by 
another node through the telephone network. 

Level 2 

The data transmission format specified by this 
level is asynchronous start-stop codes at 300 bits 
per second, again readily available in existing 
equipment. The interface to and control of the 



WEST COAST COMPUTER FAIRE 



156 



BOX 1579, PALO ALTO CA 94302 



Computer 






5 


4 


3 


Interface 






2 




Modem 
4 Auto 
Dialer 




5 








5 


1 











Dial Telephone 
Network 







Computer 








3 


4 


5 


Modem 
& Auto 
Dialer 




2 


5 




5 









RS232C 
RS366 



Bell 103 Modem Standard & 
Automatic Dialer 



RS232C 
RS366 



Asynchronous Start-Stop Codes @ 300 BPS & Auto Dialer 



Link Transmission Blocks (sequenced and error free byte delivery) and 
Telephone line control 



1 



Hardware 



Level 1 



Level 2 



Software 



Process to Process Stream Blocks (multiplexing of data link between user programs) 



4 



Level 3 



Level 4 



User Program to User Program Standards (Node Control, Mail, File Transfers, etc. 



V 



Level 5 



* RS232C and RS366 specify typica, modem and auto-dialer interfaces, respectively, but are not part of the PC Net 
standard since tne auto-dMer may be integral to the modem **** may ,n tun, oe part of tne computer interface. 



Personal Computing Network Protocol Hierarchy 



WEST COAST COMPUTER FA1RE 



157 



BOX 1579, PALO ALTO CA 94302 



Communication Protocols for a Personal Computer Network 



automatic dial and answer telephone interface is 
not specified except that the function must be 
performed. This includes the possibility of manual 
operation. Timeouts will be set to allow manual 
operation. 

Level 3 

This level provides sequenced and error free 
delivery of bytes from one machine to another, as 
well as control of telephone connection setup and 
takedown. Blocks of bytes are transmitted on the 
link with a header and checksum in a fashion 
similar to synchronous protocols like ADCCP 
(Advanced Data Communication Control 
Procedure). A synchronous bit oriented protocol 
was not used because of the unavailability of 
hardware interfaces to implement it. Error control 
is implemented using a checksum and byte count 
instead of a CRC because the CRC is cumbersome 
in software and most asynchronous interfaces do 
not support it in hardware. Sequence numbers 
provide acknowledgement of correctly received 
blocks and in addition permit several blocks to be 
sent without acknowledgement, without getting out 
of order. 

Two methods of transmission on the line are 
specified. Radix-41 is the default start up mode 
and full 8-bit codes are an option. 

Radix-41 is a 2 byte to 3 character packing scheme 
proposed by Mike Wilber to avoid the problem of 
operating system intervention (interrupting on 
control characters and uppercase conversion of 
lower case characters) when PC Net protocols are 
implemented in BASIC or . other .. high level 
language. The result of using this packing scheme 
is a reduction of 33% in throughput. 

Transmission blocks are transmitted with only 
minor modification when using 8-bit codes. 
Special flag characters are used to separate 
transmission blocks on the link. A transparency 
rule is then used to permit transmission of this flag 
character if it occurs within the transmission block. 

Level 4 

This level is useful for nodes in which several user 
programs are running concurrently and are also all 
using the phone link. Level 4 performs 
multiplexing and flow control of data streams from 
each of the programs into the single phone link. 
Separate 8 bit fields specify source and destination 
process addresses for each process-to-process 
stream. Fields also exist for sequence and stream 
numbers. In small nodes this level can be merged 
with level 3. The fields specified for the level 4 
block format still remain, but can be ignored by 
the simple nodes. Small nodes can still 
communicate with large nodes capable of 



multiplexing, but only one process to process 
stream can exist at a time in this case. 

Level 5 

User programs exist at this level. They manage the 
communication tasks such as sending or forwarding 
mail or files, and interacting with people on whose 
behalf the communication is taking place. There is 
currently a mail and file transfer protocol written 
by Peter Deutsch and a global addressing scheme 
using latitude, longitude, and phone numbers 
authored by Doug Bourne. 

Summary 

The PC Net protocols are being designed to be easy 
to implement in currently available systems, but 
with room for growth and modification if there is 
demand for it in the future. The first two levels 
are essentially complete at this time. The top three 
levels have been specified and are undergoing 
revisions relating to interfaces between these levels. 
Detailed descriptions of each level of the protocol 
will appear in the future. 



WEST COAST COMPUTER FAIRE 



158 



BOX 1579, PALO ALTO CA 94302 



PCNET PROTOCOL TUTORIAL 

(prepared from the online file PR0T0.PR3) 

by Robert Elton Maas (REM at SU-AI, MIT-MC) 

PO Box 6641, Stanford, CA 94305 



This document is one more attempt to 
explain the PCNet protocols to persons planning to 
write their own software. This document is 
written bottom-up so that node volunteers don't 
have to read it backwards to know what to 
implement in sequence. It also contains no 
completely worked-out examples (see [Maas WR2] 
for them, as well as a top-down approach), and no 
test data for debugging node software (see [Maas 
EXPERI]). It also doesn't fully specify timeouts and 
other obscure features of our protocols (see 
[Crane]; point of nomenclature - references of the 
form AAAA.BBB are to PCNet documents 
maintained as on-line files).). The two earlier 
primers, PROTO.PRIMER and PR0T0PR2 may or may 
not be useful to supplment this tutorial. 



QUICK LISTING OF DATA PASSING 
ADJACENT LAYERS OF PROTOCOL: 



BETWEEN 



This section will be mostly meaningless until 
later sections have been read, but due to our 
present indecision as to what certain things should 
be called there are some synonyms that ought to 
be pointed out before proceeding. 

Phone-line: modulated carrier, Bell 103 
standard. 

Modem cable (optional): two-level bit-serial 
with start and stop bits, RS-232, not present if 
UART+MODEM on one board. 

I/O or memory-mapped hardware interface: 
8-bit bytes containing Radix-41 characters and 
framing, making up LTBs (Link Transmission Blocks). 

Link-level midpoint: binary translation of 
LTBs, called "TBs" (Transmission Blocks). 

Pure-binary stream: data portion of TBs, 
containing PPSBs (Process-to-Process Stream 
Blocks) packed end to end. 

PPSs (dynamically created and destroyed): 
data portion of PPSBs that comprise that particular 
PPS. 

Disk I/O: implementation dependent and 
optional. 

(Note, the term "block" used by itself in this 
tutorial usually refers to a TB or LTB.) 



QUICK LOOK AT ALL THE LAYERS: 



Hardware (not detailed below): 

For compatibility with existing 

software-service bureaus, Arpanet -host dial up 
equipment, manually operated terminals such as my 
Beehive used to remotely test software, and 
low-cost available personal computer serial-i/o 
interfaces — our network will initially be geared to 
the Bell- 103 standard rather than any of the 
brand-new bit-synchronous communications 
standards such as HDLC, and will run at 300 baud 
(110 optional) rather than 1200 baud. 

The interface to the main body of software 
will consist of a GETCHARACTER routine that 
returns -1 if no character has arrived at the UART 
(Universal Asynchronous Receiver/Transmitter) 
within a reasonable time and a number between 
and octal 377 (the ASCII, or rarely EBCDIC, value 
of the characer) otherwise, and a PUTCHARACTER 
routine that either waits until the character can be 
stuffed into the serializer or returns an error flag if 
it couldn't be stuffed immediately (wait -and- stuff 
would be used in halfduplex protocol, 
stuff-or-error would be used in full duplex 
protocol). An alternative is fully-buffered i/o that 
is driven by interrupts, but with similar interface 
characteristics. Timeouts are not a 

fulltime-eseential feature, rather are used to avoid 
telephone calls longer than necessary to either 
transmit a message or determine that the other 
node is sick, and to detect that a rare failure of 
halfduplex turnaround has occurred so that the 
deadlock can be resolved. It is expected that 
during 99% of connections not a single half-duplex 
deadlock will occur, thus with semi-manual 
operation all timeouts are optional. 

No further discussion of the hardware and 
its interface will be done in the rest of this 
tutorial. 

An important segment of the PCNet protocol 
relates to Telephone Call Management(TCM). One 
of the PCNet design goals is graceful sharing of a 
single telephone line between voice and data use. 
TCM covers the activities which must take place 
from the time the PCNet node phone line goes 
off-hook until the time the Frequency Shift Key 
(FSK) handshake between the two communicating 
PCNet modems is complete. TCM also deals with 
call termination - the activities from the end of 
data transmission until the phone line goes on-hook. 



WEST COAST COMPUTER FAIRE 



159 



BOX 1579, PALO ALTO CA 94302 



PCNet TCM is intended for use in three different 
modes; 1) Attended (manual control). This mode 
assumes people present who will answer all calls, 
switching PCNet calls to the computer when they 
occur. 2) Attended (computer control). This mode 
assumes people are present for voice calls, but 
that the computer answers all calls and signals the 
people to accept voice calls. 3) Unattended. This 
mode assumes that people are either absent or 
asleep; the computer answers all calls, minimizing 
audible ring signals inside the cailed premises. 

TCM assumes thai a sophisticated modem is 
available; one capable of detecting telephone 
signals such as ring, busy, dial tone, etc. Simpler 
modems with time-outs may be used with the 
penalty of slower and less efficient operation. 

In present attended (computer control) and 
unattended TCM modes the computer goes 
off-hook for all incoming calls; if the call is voice 
and not data both people on the premises and the 
calling party must be given a ringing signal so that 
the voice connection may be completed. This is 
undesirable in that billing will start as soon as the 
phone line goes off-hook and before the voice call 
really begins. Also a special piece of equipment is 
required to generate the ringing signals. Some 
better way of differentiating between voice and 
data calls on the same phone line would be 
desirable. 

Link level (bottom half of communication software): 
Errors in transmission invariably occur when 
using modems over dialup lines. Thus a facility for 
detecting errors, requesting retransmission 

(implicitly ...in._ PCNeL by a lack of affirmative 

response within a reasonable time), holding 
out-of-sequence blocks until the missing earlier 
blocks can be retransmitted, putting blocks into 
their correct sequence, and delivering verified and 
sequenced data up to the next level; has been 
included. In the default mode of operation, only 
one block can be sent at a time, eliminating the 
need for buffering and sequencing. 

When implementing our protocols as user 
programs on existing computer systems, limitations 
in the characterset available as input to a node, 
and sometimes even as output, usually make it 
impossible to transmit arbitrary 8-bit bytes across 
the line. For example, most systems ignore the 
parity bit on input, and set the parity on output 
regardless of what the programmer actually 
supplied as the octal 200 bit of outgoing data. 
Furthermore many systems supply linefeed to the 
input stream after carriage return that comes in, 
ignore null, do strange things like killing or holding 
output when control-0 or control-B is input, and 
interrupt the program completely when receiving 



control-C or control-Z. Some systems even 
convert all lower-case characters (octal 141 to 
172) into upper-case! To avoid almost any 
possible conflict when passing binary data, a subset 
of 41 (decimal) characters called Radix-41 has 
been selected to be transmitted across the line. 
Two 8-bit bytes of binary data are represented by 
three bytes of Radix-41. A more complete 
discussion of the alternatives, and reasons for our 
belief that Radix-41 is the optimal method for our 
purposes, are in [Maas RAD41]. 

Many systems echo back anything typed at 
their input lines, and on most systems this echoing 
cannot be turned off completely. Also, most 
programmers using BASIC on personal computers 
are unable to handle multiple concurrent processes, 
nor fully-buffered i/o, thus a fullduplex mode of 
operations where data is simultaneously travelling 
in both directions at the same time, is infeasible. 
We have thus chosen a method of simulating 
half-duplex mode of operation on any full-duplex 
or echoplex or true-halfduplex line, and it is the 
default mode of operation. To almost eliminate 
deadlocks caused by the turnaround character 
being lost due to line noise, 3-out-of-5 majority 
logic is used to determine whether the other node 
has or hasn't finished transmitting. To avoid being 
confused by seeing your own echo, a different 
turnaround character is used for the two nodes in a 
link ("[" vs. "]">• Also, each TB contains a bit 
telling who sent it, so that echoed TBs won't be 
accepted by the node that sent them in the first 
place (in the event that echo is delayed due to 
buffering, turnaround get momentarily confused, or 
echo occurs while in full-duplex mode). 

Node level (third quarter of communication 
software); ~ '"" 

The interface between the Link level and 
the Node level consists of a "pure binary stream" 
which is a sequence of 8-bit bytes with all 256 
possible values legal. Files can be transmitted 
using only the hardware and Link levels, however 
that leaves no method for starting and stopping a 
transmission. The Node level is a way to multiplex 
control information (start and stop of transmissions 
of files, as well as node-identification, network 
statistics reports, requests for fullduplex mode of 
operation, and advanced features we haven't even 
thought of yet) and data (one or more 
file-transfers, and maybe even additional services 
such as "TELNET" (link between a terminal and a 
remote interactive program)) along a single 
pure-binary stream. 

Virtual circuits are established between a 
process on one node and a process on the other 
node, for example between a process having a file 
it wants to transmit and a process that accepts 
files and saves them on its disk. We call such a 



WEST COAST COMPUTER FAIRE 



160 



BOX 1579, PALO ALTO CA 94302 



circuit, at this level, a Process-to-Process Stream. 
Normally here will be one PPS in each direction so 
that the two processes can talk in duplex Each 
PPS is broken into blocks, called PPSBs, so that it 
is easy to detect end of transfer without knowing 
the totai data count at the very si art (there is a 
bit in the header of each PPSB telling whether it is 
the last or not, and a count of zero data bytes is 
legal so that end-of-transmission can be sent at 
the very last possible moment if it is only then 
when the sending node realizes it really is done), 
and so that control messages and/or blocks of 
some other PPS can be multiplexed between 
PPSBs of any PPS in progress. 

Optional features include keeping track of 
buffer allocation at this level so that if one PPS 
gets blocked the link can still be used to transmit 
other PPSs without losing data of the blocked PPS 
(i.e. no data from blocked PPS is put into the 
pure-binary stream until the other node announces 
that it has more room in its buffer to store it). 

In the default mode of operation, only one 
transfer can be active at a time, no accounting for 
allocation of buffers is done, and any control 
messages or requests for additional transfers are 
ignored while a transfer is in progress. Also, the 
beginning of each PPSB is located at the beginning 
of a LTB and each PPSB is wholly contained in that 
LTB, so that an incoming block can be handled 
completely by a closed subroutine that preserves 
almost no state-information from one block to the 
next. 

The result of all this is that pure-binary 
duplex communications are established between 
File Transfer Process (FTP)/MAIL 

server-processes on the two nodes, without 
preventing upward compatibility into multiple 
concurrent services occurring between a pair of 
advanced nodes, and without preventing an 
advanced node from talking to a very-simplest 
node. In the simplest implementations it is 
expected that all levels in the receive pipeline will 
be compressed into a single piece of code that 
checks incoming data for validity, discards anything 
containing transmission errors, discards any PPSB it 
isn't able to accept, ignores any control mesage it 
doesn't understand, and depending on a boolean 
variable either awaits a request for opening a file 
transfer or delivers data from the active transfer 
to some output file. The transmit pipeline would 
need a queueing mechanism so that replies from 
the FTP/MAIL server-process could be sent as 
soon as turnaround occurs, and TBs containing no 
data could be sent if no data is awaiting 
transmission. 

Server-process level (top quarter of 
communication software): 

A server-process is a subroutine or other 



chunk of program which actually does something 
useful, as contrasted with all the routines at lower 
levels that do the grungy stuff necessary to make 
server-processes possible. Thus the 

server-process level is the highest level of the 
protocol. At present we define two 

server-processes, "control" and "FTP/MAIL". A 
server-process is specific to one particular type of 
activity, whereas all the other levels of software 
are general -purpose for linking nodes and 
server-processes together. A "listener" is that 
part of a server-process which sits waiting for the 
other node to give it a request to do something, as 
contrasted with performing an action after the 
request has been received, or spontaneously 
initiating actions or requests, which are done by 
non-listener parts of a server-process. 

The control-listener handles any PPSB 
addressed to process 0, checking to see if it knows 
the control opcode, and if so then acting on it 
somehow. In advanced nodes, an explicit 
negative-acknowledgment will be issued for 
anything it understands but rejects, and for 
anything it doesn't understand that is in affirmative 
mode. A simple node can ignore anything it doesn't 
like. 

The control process also has the duty of 
generating control messages to be sent back. 
Semi-mandatory is identification of the node. 
Optional are requests to go fullduplex or binary 
<non-radix41) or unsynchronized (PPSBs and LTBs 
overlapped for increased thruput) or allocated 
(explicit allocation granted before data can be sent 
on a non-control message, except for initial 
requests for transfer which are "borrowed" from 
the later allocations). 

The FTP/MAIL listener handles any new PPS 
that is addressed to process 1. These usually 
consist of requests for starting a file transfer. If 
the request is acceptable at this time, a duplex 
connection (one PPS in the other direction, in 
addition to the already-started PPS that requested 
the transfer) is established between a piece of 
code on one node and one on the other node. 
When the end of the original PPS occurs, 
end-of-transfer is signalled, and an 
acknowledgment and optional file-checksum is sent 
on the reverse PPS just before it too is closed 

Local forwarding/mailing software outside 
server-process; 

Before a message or file can be transmitted 
to another node, it must be created somehow, and 
then queued for the server-process to handle. 
The queued version must contain a PCNet header 
telling where its ultimate destination is, and may 
also have in the header a decision as to where the 
next hop will be (i.e. to which node it will be 
forwarded next). The PCNet communication 



WEST COAST COMPUTER FA1RE 



161 



BOX 1579. PALO ALTO CA 94302 



software must then somehow get started, either by 
answering the phone, or by the system or another 
program or a human explicitly starting it up. 

After a message has been received and the 
phone hung up (or possibly after the message has 
been received but while the phone link is being 
used for additional messages or other services, if 
the computer system is powerful enough to do so 
many things at the same time without slowing down 
the phone link), it must be decided whether the 
message is for local delivery or must be forwarded 
to yet another node. If forward, go to preceeding 
paragraph, else some delivery method must be 
chosen, such as appending to the start or end of a 
person's message file, writing as a new file with 
header stripped off and an anouncement of its 
arrival appended to the mail file, listing in hardcopy 
for manual delivery, or summoning an operator to 
telephone the addressee and recite it verbally. 

Since all this occurs outside the telephone 
link, it can be handled at leisure by whatever 
combination of manual and automatic means the 
owners/operators of the node may decide upon. 
However, once the server-process accepts an 
FTP/MAIL request, it is mandatory that either an 
explicit negative-acknowlegment be given, or the 
message or file be correctly delivered to its 
intended recipient. Any node which accepts 
messages and then loses them without comment, 
will get nasty black marks in the 
master-network-directory, and other nodes will be 
warned not to trust the offending node, which will 
probably result in ostracism until the offending 
node is fixed. To avoid this, if an operator 
discovers that his system has crashed and 
obliterated from the disk some message entrusted 
to it, he (she) should-lmmediately telephone the 
original sender to inform him (her) of the accident 
so that he (she) can re-submit the message to the 
network. (This of course implies that each node 
have some form of backup, such as a hardcopy log 
of message headers.) 



DETAILED FUNCTIONS OF ALL THE LAYERS: 

Radix-41 transmissions: 

The mapping between the 41 characters of 
the Radix-41 characterset and the values to 40, 
is nicely diagrammed in [Wilber, page 41], but can 
be summarized briefly. Open parenthesis, "(", maps 
to the value 0. Numerical-digit characters "0" thru 
"9" map to the values 1 thru 10 (note the offset, 
character "5" maps to value 6 for example). 
Uppercase alphabetic characters "A" thru "Z" map 
to values 1 1 thru 36. M *" maps to 37, "+" to 38, 
"- H to 39, and T to 40. 

To be sure the reader understands the 
Radix-41 representation, the most commonly 



misunderstood part of our protocols, I will now 
present algorithms for converting to and from 
Radix-41. 

Three characters of Radix-41, corresponding 
to the three numerical values they map to, are 
combined to make one 16-bit number. The first 
numeric value is multiplied by 41*41, the second 
by 41, and the third by 1, then these three 
products are added. (More efficient is to compute 
V3 + 41*(V2 + 4UV1), which only uses two 
multiplications and two additions.) Going the other 
way, two divisions must be done somehow (the 
most efficient way is either a table lookup on 4 
4-bit-byte8 extracted from the 16-bit quantity, 
adding the four value-triples looked up in the four 
tables, or for each division a multiplication by an 
approximation to 1/41 followed by a slight 
correction). 

To convert from Radix-41 characters to 
binary, first map Radix-41 to numeric values, then 
do the two multiplications to get a 16-bit number, 
then break that number into two 8-bit bytes. The 
mapping can be done efficiently by range checks 
for numbers and upper-case-letters (in either case 
a simple subtraction of a constant will finish the 
mapping) followed by a check for the other five 
characters if the range checks fail. 

To convert from binary to Radix-41, first 
combine the two bytes into a 16-bit quantity 
(unless you are using the 4-table lookup method), 
then do the two divisions by 41, using the 
remainders and the final quotient as the numeric 
values in reverse order (i.e. the final quotient is 
the first value, the second remainder is the second 
value, the first remainder is the third value), and 
finally map to Radix-41 by a simple index into a 
table of 41 characters. 

All this conversion between binary and 
radix-41 actually occurs as subroutines in about 
the second-next section in this tutorial, however 
the algorithms were discussed here so the reader 
understands what Radix-41 is and is not before 
getting embroiled in halfduplex turnaround and LTB 
framing. 

(Note, an alternative to Radix-41, 
transparant 8-bit mode, is described in [Crane]. It 
will not be explained in this tutorial. The 
discussions below of HDX turnaround, LTBs, and 
dropping of the odd byte, apply only to the 
Radix-41 mode of transmission. Other sections 
apply equally to both modes of transmission.) 

Half-DupleX (HDX) turnaround: 

To avoid deadlocks when one or two 
characters at the end of a transmission is (are) 
garbaged, a 3-of-5 majority rule is used. Five 
turnaround characters are transmitted, and as soon 
as at least three of them have been received at 
the other end, that node begins transmitting 



WEST COAST COMPUTER FAIRE 



162 



BOX 1579, PALO ALTO CA 94302 



without waiting for idle line or the rest of the 
turnaround characters. REM made an arbitrary 
choice of open and close square bracket (in ASCII, 
octal codes 133 and 135, gotten by shift-K and 
shift-M on most terminals even if not shown on the 
key), which has been tentatively accepted by 
everyone in the protocol committee, and so has 
been written into our protocols. (If we discover a 
high rate of errors, and find two other characters 
not already used by our protocols but having much 
lower error-rate, we are willing to change this 
decision.) 

To avoid overlapping an LTB with the tail of 
the half-duplex turnaround from the preceeding 
transmission in the reverse direction, or even in 
the same direction if the node starting to listen will 
see its own echo multiplexed with the beginning of 
the other node's transmission, each transmission 
begins with a series of five (or more) at signs. 
(Atsigns were chosen, after considerable 
experimentation, for their remarkable property of 
fixing UART character-misframing, thus assuring 
correct UART sync for the LTBs that follow, even if 
due to hardware or interface problems the 
beginning of a transmission has the UART in some 
funny state such as transmitting half a character 
then being reset and immediately starting another 
character, or interleaving incoming data and echo of 
one's own outgoing data at the bit level (like my 
Beehive does when in halfduplex mode!!!)). 

Finally, I will answer one of the most 
frequently-asked questions, which I always have to 
look up myself. Which node transmits "[" and 
which node transmits "]" The answer is that node 
(the node that originated the call) transmits "]" and 
node 1 (the node that answered the phone when it 
rang, which implies an answering modem) transmits 
"[". Thus after- node 1 answers the phone and 
starts up the PCNet communication-program, it 
transmits [[[[[ to indicate it is listening for the first 
actual transmission, then node transmits @@@@@ 
followed by one or more Link Transmision Blocks 
(LTBs) followed by ]]]]]. Then node 1 transmits 
@@<a@@ followed by its blocks followed by [[[[[. 
This alternation continues until one or the other 
node hangs up after either agreeing with the other 
node that they are done, or getting disgusted with 
the other node and giving up. 

Link Transmission Blocks (LTBs); 

In addition to the mapping from binary into 
Radix-41, each LTB is prefixed by an atsign, and 
followed by another atsign. Thus a total of six (or 
more) consecutive atsigns occur at the beginning of 
each transmission, adjacent LTBs are separated by 
two atsigns, and one atsign occurs immediately 
before half-duplex turnaround brackets. Atsigns 
serve two purposes, correcting UART mis-frame, 
and delimiting LTBs at the software level (in fact at 



THIS level right here). Of the two atsigns between 
LTBs, the first one fixes the UART so the second 
will get through to software, and the second one 
(or the first if both get through) tells the software 
to finish any preceeding LTB that it was parsing 
and to start another as soon as a valid Radix-41 
character (not atsign, not brackets) occurs. 

An LTB as actually transmitted, therefore, 
consists of one atsign, 3*N Radix-41 characters 
(representing 2*N 8-bit bytes that are one TB), 
and one more atsign. 

After a LTB (delimited by atsigns) is parsed, 
it is mapped into binary using the subroutine 
detailed earlier, if its length is not a multiple of 3, 
the mapping fails and it is rejected immediatey. 
Also if it is exactly or 3 characters long (the 
former check is an easy way to determine the 
nothing between two consecutive atsigns that 
occur between LTBs, namely you pretend it is an 
LTB then reject it because it is too short to really 
be one). 

If timing is critical, it may be necessary to 
buffer up a complete transmission without checking 
validity of LTBs, or even without parsing them at 
all. All checking can be postponed until after 
half-duplex turnaround. On the PET, using BASIC, 
even that trick loses, and it is necessary to make 
the main loop buffer up incoming characters 
without even checking for turnaround-brackets. 
When the main loop detects that no character has 
arrived, it lets a second loop, a co-routine, steal a 
moment of CPU time to perform one step in a loop 
that searches the buffer for turnaround- brackets. 
(Two routines are co-routines, as contrasted with 
one main routine and one sub-routine, if each 
returns to where the other left off, rather than one 
of them (the sub-routine) always being restarted.) 
Thus during the actual transmission the HDX-search 
co-routine lags far behind, then has time to catch 
up while the line is idle after HDX turnaround, at 
which time it finally sees the brackets and signals 
turnaround. 

Odd/Even checksum: 

This check, and the next three, can be done 
in any of the twenty-four possible sequences. The 
order shown here is random, but based on 
heuristics (actually prejudices). In actual fact the 
most efficient sequence is probably (1) 
drop-odd-byte (2) compare length (3) check 
orig/ans (4) compare checksums. 

All the odd-numbered bytes are added up, 
modulo 256, and compared with zero. All the 
even-numbered bytes are added up and checked in 
the same way. (This can be done in a single loop 
by swapping the two running sums and always 
adding to the same variable.) If either result Is 
nonzero, the block is rejected. 

When transmitting a block, it's a little more 



WEST COAST COMPUTER FA1RE 



163 



BOX 1579, PALO ALTO CA 94302 



tricky because the two checksums obtained must 
be complemented before appending to the TB, and 
the appending must be "reversed" if there is an 
odd number of bytes so that the receiving node 
will get zero for each alternating checksum. See 
below for more on the extra zero byte added after 
the checksum when the TB has an odd number of 
bytes. 

Originate/Answer flag: 

The octal 200 bit in the first byte of the TB 
is the originate/answer flag. It equals the node 
number of the sender of the block, which is the 
complement of the receiving node number. 
(O=originate l=answer, referring to original 
establishing of connection as well as to modem 
frequencies. Nodes not using Bell 103 protocol, for 
example radio links, must agree who is node and 
who is node 1 before blocks can be exchanged.) 

When receiving a block; if this bit isn't the 
complement of one's own node number, the block is 
rejected. 

Drop odd bvte: 

If the TB-length, which is the complete 
second 8-bit byte of the TB, is odd, there is an 
extra zero byte (the last byte from Radix-41 to 
binary conversion, which is the next byte after 
TB-length has been exhausted) at the end of the 
TB which must be ignored. The easiest way to 
handle this is to decrease-by-one the local 
variable that tells the actual size of of the TB 
decoded from Radix-41 (before this step it will 
always be even, and if this step is performed it 
will then be odd like the TB-length in the 
second-byte already was). 

tt is reccommended, if you can afford the 
code, to first check this byte to be sure it really is 
zero, and to report an error if this check fails after 
the other three checks have succeeded. 

Length: 

The length as specified in the second byte 
should now equal the received-TB-size minus two 
(because the checksum bytes and the extra zero 
byte aren't counted, and the extra zero byte has 
already been deducted). If this step is performed 
before removing the extra zero byte, then the 
TB-length ROUNDED UP TO THE NEXT EVEN 
NUMBER is compared with the received-TB-size, 
instead. if the checksum has already been 
computed, and discarded from then 
received-TB-size, AFTER REMOVING THE EXTRA 
ZERO BYTE IF TB-LENGTH IS ODD, then you don't 
even have to offset by two, the two counts will 
exactly agree. In any case, when receiving a block, 
if the lengths disagree the block is rejected (thus 
two blocks concatenated, whose checksums will 
always combine to yield zero, or a block which has 



been truncated but whose received part is all zero 
thus adding to zero, will be rejected. Even a 
steady stream of zero values, represented by the 
open parenthesis character, will be rejected, 
because the TB-length in the header of the TB will 
be zero whereas it should be at least two. Even if 
it it is two due to noise on the line, it is unlikely 
that a checksum of exactly 376 to offset it could 
be created by the same burst of noise without 
messing up the other interleaved parity.). 

Sequencing of blocks modulo 8: 

The first two bytes of each TB are the 
header. We've discussed everything in it except 
the two sequence fields. One (called SEQ) is the 
sequence number (of the TB it is in) modulo 8 and 
the other (called REVNAK in our current software 
~ this term as well as SEQ, RCVNAK, XMTNAK and 
XMTGEN may be changed in later documentation 
and software) is a sequence number for 
not-yet-received blocks traveling in the reverse 
direction. The latter is of interest to the transmit 
pipeline when we receive a TB containing it, and is 
taken from a globally-available parameter in the 
receive pipeline when transmitting a TB. As it sits 
inside (first byte, mask 007) the TB, I call it 
REVNAK which means "REVerse Negative 
AcKnowledgement". It comes from the RCVNAK 
variable of the transmitting node, and is stored in 
the XMTNAK variable of the node that receives it. 
Thus it is affiliated with the REVerse process to 
the one that is actually passing it across the phone 
line. 

The SEQ field refers to the TB it is in, 
identifying its sequence number modulo 8 (i.e. a 
3-bit number). When constructing a TB for 
transmission, a local variable XMTGEN is used to 
generate this field, then XMTGEN is increased by 1 
(modulo 8) to be ready for the next TB to be 
constructed. The XMTGEN variable in each node 
starts at zero, thus the blocks sent by each node 
are numbered 0,1,2,3,4,5,6,7,0,1,2,3,... This block 
number, a 3-bit field in the TB header (octal mask 
070 in the first byte), is then used by the 
receiving node to decide whether it has already 
gotten it, is expecting it now, or isn't yet ready for 
it. The first and third cases are generally 
indistinguishable. In either case the block is 
ignored except that since the checksum etc. all are 
ok it is known to be A BLOCK from the other node 
hence the REVNAK field can safely be copied to 
the XMTNAK variable the same as if it was a block 
that was accepted. (Normally the storing of 
REVNAK into XMTNAK is done just before the block 
sequence number is checked, but of course after 
all parity+length+extrazero+originate checking is 
done.) 

If the received block is numbered exactly 
the same as RCVNAK (oldest still-not-received 



WEST COAST COMPUTER FAIRE 



164 



BOX 1579. PALO ALTO CA 94302 



block, initialized to zero) then the header and 
checksum are stripped away and what's left is 
passed up to the pure-binary stream (if the TB 
length was exactly two, then there are exactly 
zero bytes of data, so nothing is passed up) and 
the RCVNAK is increased by on9 and reduced 
modulo 8. These two steps, passing up data and 
updating RCVNAK, must be properly synchronized 
(if this software has multiple processes active at 
the same time) so that it is impossible to get two 
copies of the same block and accept them both. 

If a node is capable of buffering more than 
one block at a time, then it is possible to .get an 
acceptable block that isn't the very next one but 
which can be saved at the receiving node until the 
intervening one(s) get (re)transmitted to fill the 
gap. Then when the one matching RCVNAK finally 
arrives, after updating RCVNAK another check is 
made to see if the one matching the new value of 
RCVNAK has already arrived, in which case it too 
can be unbuffered and passed up to the 
pure-binary stream, RCVNAK updated again, and 
the test for already-arrived-RCVNAK-equal block 
repeated until it finally fails. (At most four blocks 
can be receivable at one time, thus at most three 
blocks already buffered can be emitted when the 
one before them finally appears. This limit of 
4-out-of-S is absolute, there is a counterexample 
(or scenerio) that demonstrates that with a window 
of 5 or more out of 8, a block can be mistaken for 
one 8 earlier or later and thus completely destroy 
function of the link. This fact won't be apparent 
until we've finished discussing the function of the 
REVNAK field and the XMTNAK variable.) 

The function of the RCVNAK variable, as 
observed from the outside (in particular from the 
transmit pipeline which may run asynchronously at 
the same time as the receive pipeline when in 
full-duplex mode) is now describable. At any 
moment it equals the number of the oldest 
not-yet-received-and-completely-processed block. 

Each time the transmit pipeline sends a 
block, at the last possible moment before 
transmission (just before converting to Radix-41), 
it copies the RCVNAK variable into the REVNAK 
field of the header, and recomputes the checksums. 
(Note this also occurs on retransmission of a block, 
thus it is always current in realtime at a moment 
just before the start of the LTB output.) The 
effect is that the REVNAK field is an implicit 
acknowledgement of all blocks (in the other 
direction) preceding the one numbered REVNAK, is 
an explicit negative acknowledgement about the 
one numbered exactly REVNAK, and is a "no 
comment" on all later blocks that might have been 
received and buffered or might not have yet "been 
received. 

We may define the time that an 
acknowledgement really happens to be the instant 



when the node receiving the block, after checking 
parity etc., stores the REVNAK field into the 
XMTNAK variable. Thus at any moment, the 
XMTNAK variable in a node equals the sequence 
number (modulo 8) of the oldest outgoing block 
that hasn't yet been acknowledged by the other 
node. When XMTNAK equals XMTGEN, it means 
that all outgoing blocks constructed earlier in this 
session have been sent and acknowledged. 
Otherwise it means the blocks numbered from 
XMTNAK up to but not including XMTGEN are either 
somewhere on the round trip out (as blocks) and 
back (as implied acknowledgements), or have been 
lost somewhere due to line noise or lost characters 
due to too-slow software or other problems. A 
heuristic algorithm in the transmit pipeline uses 
XMTNAK and XMTGEN as well as any other 
information available, to decide whether to 
retransmit a block that still hasn't been 
acknowledged, transmit a new one while waiting a 
little longer for the wayward block to get 
acknowledged, or perform half-duplex turnaround. 
In the simplest implementation, which is the default, 
a window of l-out-of-8 combined with half-duplex 
mode makes the choice obvious, namely upon 
getting turnaround the program checks XMTNAK 
against XMTGEN. If XMTNAK+1=XMTGEN (mod 8) it 
retransmits XMTNAK block. If XMTNAK=XMTGEN it 
constructs a new block from queued data (if none 
there's some hair, consult REM and look at a listing 
of the program PCNSR3.SAI for details). The other 
six possibilities are impossible, thus indicate 
programing bugs or faulty hardware inside one 
node or the other. 

Pure-binary stream: 

The data portion of TBs arrives as a stream 
of bytes (or as successive arrayfuls of bytes, one 
array from each TB). It may be fed directly to the 
PPSB parser, or buffered first. In any case there 
should be an explicit control point through which ail 
incoming pure-binary data passes, and another 
similar control point for the transmit pipeline, so 
that software below this level can be made almost 
totally independent of software above this level, 
and so that during debugging a trace can be 
installed to see what is getting thru these two 
points (rev and xmt pure-binary) in the software. 
Why break the software at these two points? 
First, because it is the only place in the entire 
software, other than the UART interface, where a 
conceptually-clean place gets 100% of the data 
flowing through the software. Second, it is a 
natural place to splice different protocols together. 
During initial testing of the bottom half of the 
protocol it is common to put the software in 
loopback mode by feeding ail incoming data right 
back out. Slightly later the lower half can be used 
almost-stand-alone for file-transfer using a simple 



WEST COAST COMPUTER FAIRE 



165 



BOX 1579. PALO ALTO CA 94302 



top-half kludge (halter-top?) that is initiated 
manually at each end or semi-automatically by a 
restriction on the characterset and a convention for 
detecting end of file. (The program PCNSR2.SAI is 
an example of this.) Another possibility is to 
replace the bottom half by some commercial data 
network that guarantees 1007. perfect 
transmissions of 8-bit bytes, or by the bottom half 
of the DIALNET protocol, or by one of the new 
bit -synchronous communications protocols. 

PPS Blocks: 

At the node level, data is explicitly broken 
up into PPSBs, each of which is one segment of a 
PPS (Process-to-Process Stream). If necessary 
these can be multiplexed (complete PPSBs from 
one PPS located between those from another PPS, 
but a PPSB isn't broken internally, thus a PPS can 
be broken only at PPSB boundaries). The very 
first byte of data in the very first LTB, during any 
given session, is also the first byte of header of 
the first PPSB in that session (this applies 
separately to the two pipelines, one in each 
direction, transmit and receive). Once the pipelines 
have started, the PPSB-LENGTH field in each PPSB 
determines where it ends, and the next PPSB 
starts immediately after (the next byte of the 
pure-binary stream). Since the data in the 
pure-binary stream is 100% accurate, no errors can 
happen in parsing (except by failure of the 
equipment, which is assumed to not happen), so no 
other framing is required. In the default mode, with 
LTBs and PPSBs synchronized, there is additional 
redundancy that can be used to detect such 
"never-happen" failures. 

The first PPSB in any PPS has two fields not 
in later -PPSBs, namely a SOURCE-PROCESS and 
DESTINATION-PROCESS number, each 8 bits. The 
DESTINATION-PROCESS field is used to direct the 
PPS to the correct piece of code to start 
processing the PPS. After the PPS has started, 
that code passes control to whoever will really be 
reading the PPS, which may be a 
specially-generated entry point, or a throw-away 
sink if the PPS isn't acceptable for receipt. The 
SOURCE-PROCESS field is used in case the 
DESTINATION-PROCESS wants to open a PPS in the 
reverse direction, it uses the SOURCE-PROCESS of 
the original PPS to fill the DESTINATION-PROCESS 
field of the reply PPS. 

Every PPSB has the following fields: 
BLOCK-LENGTH (used to parse PPSBs in 
not-delimited end-to-end format of the pure-binary 
stream), PPS-NUMBER (used to identify which PPS 
it is part of), BLK-NUMBER (sequence number 
within that PPS, starting at for the first-PPSB 
which has the two extra fields described above), 
and LAST-BLOCK-BIT (1 if this is the last block of 
the PPS, so that the PPS it is in will be formally 



closed at the end of this PPSB, otherwise the PPS 
will be kept open waiting for more PPSBs). 

Normally the block number is almost 
redundant. If it is zero for a PPSB that isn't part 
of a known PPS, it is assumed to be block (rather 
than block 8 etc.), and the DESTINATION-PROCESS 
field is checked for legal values (0 and 1 currently, 
except when it is a reply to an FTP), otherwise it 
is a non-first block and can be ignored. Note that 
at most 8 PPSBs can be sent in a new PPS before 
getting positive confirmation that the other node 
has actually accepted the PPS, otherwise block 8 
might be confused with a new block attempting 
to open a new PPS. 

In advanced nodes with multiple link-levels 
over separate dialup lines to increase effective 
bandwidth, the PPSBs for one PPS can be 
distributed to different link-levels, and the block 
numbers used for reassembling them in correct 
sequence. But this is not likely to happen for quite 
a while! 

Note that if the process originating 
(SOURCing) a PPS realizes after it has already sent 
the last byte in a PPSB with LAST-BLOCK-BIT 
zero, that the PPS should now be closed, it can 
simply send a PPSB with BLOCK-LENGTH equal to 
exactly 3 (i.e. 3 bytes of header and bytes of 
data) and with LAST-BLOCK-BIT set. Thus it is 
never too late to close an open PPS. There are 
also methods to abort a PPS rather than closing it, 
usually to signal some error condition. This 
capability is included in the control messages listed 
in [Maas WR2]. 

Process-Process Stream: 

After deciding where to send the data part 
^-rr^SBrtn^-strtpping off the 3-word or 5-word 
header (5 for the first PPSB in a PPS, 3 for later 
PPSBs in the same PPS), the remainder of the 
PPSB (up to 255-3=252 or 255-5=250 bytes, 
minimum 5-5=0 or 3-3=0 bytes) is passed up to 
whereever it was supposed to go, to be 
interpreted further by whatever program is located 
there. Two such programs, the Control -listener, 
and the FTP/MAIL server, are defined presently. 

ProcesssO — meaning of link-control messages: 

The Control -listener gets any PPS that is 
addressed to destination process 0. Each PPS 
must consist of exactly one PPSB, with the 
LAST-BLOCK bit turned on (1). Any multi-PPSB 
addressed to process is considered a violation of 
protocol. Each PPSB to the Control-listener 
consists of exactly one control message. The first 
byte (of PPSB-DATA) is the control opcode, and 
any remaining bytes are arguments. A list of 
currently designed control messages are in [Maas 
WR2]. Almost all them can be ignored safely by 
unfancy nodes. 



WEST COAST COMPUTER FAIRE 



166 



BOX 1579. PALO ALTO CA 94302 



Process*! — protocol for transferring a file 
(message or other); 

All PPSs directed to DESTINATION-PROCESS 
1 are fed initially to the FTP/MAIL listener. After 
a PPS has been opened, a siightiy different entry 
address will probably be set up so that the rest of 
the PPS can be processed without constantly 
rechecking for same/different PPS number. Usually 
a dispatch table for currently-open PPSs will exist 
in the PPSB parser, and simply changing an entry in 
it will switch a stream to a different piece of code 
without affecting anythng else. Any new PPS 
addressed to process 1 will go to the original 
FTP/MAIL listener, which will then note that an 
FTP/MAIL is already in progress and either ignore 
or signal abort unless the computer can handle 
multiple simultaneous file transfers (a rare situation 
even on large computers). 

The general protocol for transferring a file is 
as follows: The node wishing to send the file first 
sends a IFTP (Initialize File-Transfer-Process) 
request to process 1 of the node that will (maybe) 
receive it. That node then checks to see if the file 
is small enough to fit in available storage, and if not 
replies with a NO-I-WON'T IFTP message. If, 
however, the IFTP is acceptable, it replies with an 
l-WILL IFTP message. Then on the same PPS as 
the original request, the sending node transmits an 
FTP/MAIL opcode of PLEASE-DO TAKE-THIS-FILE 
followed by actual data of the file all the way to 
the end of the PPS which is then closed. Finally a 
reply of either l-WILL TAKE-THIS-FILE containing a 
checksum of the data received (zero if no 
checksum was computed) if it was successful, or 
l-WONT TAKE-THIS-FILE with some error code if 
not. The receiving process should actually safely 
close the file it is writing into storage, before 
sending the l-WILL ... <checksum> confirmation of 
completely successful transmission. After the 
transmitting node gets the confirmation, and 
verifies the checksum is correct or zero, it may 
safely delete the copy it was reading from. 

Local interface between FTP/MAIL-server and 
mail-forwarding queue; 

This is mostly up to the operators of the 
computer. 

Local mail-forwarding program: 

General guidelines for forwarding of 
messages are in [Deutsch], [Bourn], and [Maas] 
(respectively, MAIL/FTP protocol, 

worldwide-addressing, and final -deli very). How 
forwarding is actually accomplished is up to the 
individual operator(s). 

Local mail-creating/editing/receiving program(s): 

When creating a message or initializing an 



FTP, the correct header should be put at the start 
of the file. The forwarder and the protocol 
program can then handle it as a chunk of data, 
examining the header when necessary to see what 
to do with it next. When delivering the message 
to the addressee, it is optional how much of the 
header to keep, how much to edit to make it 
prettier, and how much to purge. All this is up to 
the operator(s) of the system. 



SUMMARY: 

We hope that this tutorial has helped the 
reader understand most of internal workings of the 
program that at one end of a phone connection 
automatically maps files down through the layers of 
protocol and transmits them out the telephone line, 
and at the other end receives the LTBs and maps 
them up through the layers to construct a copy of 
the file. Formal specifications of these 

communication protocols are given in [Crane]. 
Specifications of how a message-forwarding 
network is built upon these protocols are given in 
[Wilber], [Bourn] and [Maas WR2]. These and 
other documentation and tutorials from the PCNet 
Committee are available at a nominal charge to 
cover the cost of reproduction and mailing. 
(Contact the author, or any of Dave Caulkins, Mike 
Wilber, Ron Crane or Peter Deutsch.) 

At the time of final-editing of this tutorial 
(1978 January 16), protocols are working on 
several PDP-10 computers, and this software has 
been partially transferred to the PET (using BASIC) 
and to the Altair (using assembly language). It is 
hoped that we can have several micro-processor 
nodes fully-working and doing useful 
electronic-mail service by the time this paper is 
presented at the fair. 



REFERENCES: 

[Bourn] "A Proposal for Addressing Stations of the 
Personal Computing Network", by Doug Bourn, an 
internal working paper of the PCNet Protocol 
Committee, available by photocopy means only. 

[Crane] "PC Net Communiation Protocols", by Ron 
Crane et al, a working paper of the PCNet Protocol 
Committee, in press (online file PR0T0.PB1). 

[Deutsch] "Mail Transfer and Forwarding", by Peter 
Deutsch, a working paper of the PCNet Protocol 
Committee, in press (online file SERPRO.TTY). 

[Maas] "Final Delivery of Messages", by Robert 
Maas, an internal working paper of the PCNet 
Protocol Committee. 



WEST COAST COMPUTER FA1RE 



167 



BOX 1579, PALO ALTO CA 94302 



[Maas EXPERI] "Experiments Sub-Committee of 
PCNet Committee - Status Report", by Robert 
Maas, continually-updated file (online file EXPER.I). 

[Maas FLO] "Flowcharts Showing Data and Control 
Interfaces between Modules in PCNet 
Protocol/Software", by Robert Maas, in press 
(online file PROTO.FLO). 

[Maas RAD41] "Explanation of Radix-41 in PCNet", 
by Robert Maas, in press (online file RAD41.WRU). 

[Maas WR2] "The Design of the Personal-Computer 
Network (PCNET)", by Robert Maas, in press 
(online file PROTO.WR2). 

[Wilber] "A Design for a Network of Community 
Information Exchanges", Mike Wilber, presented at 
the first West Coast Computer Fair e. 



WEST COAST COMPUTER FAIRE 168 BOX 1 579, PALO ALTO CA 94302 



MICRO'S IN THE MUSEUM-A REALIZABLE FANTASY 
Disneyland on your doorstep? 

Jim Dunion, The American Museum of Energy., P.O. Box 117, Oak Ridge, TN 



Abstract 

The American Museum of Energy in 
Oak Ridge, Tennessee has recently begun 
a program to introduce and develop micro 
computer technology in a museum environ- 
ment. 

The museum has some data processing 
requirements, which, although not very 
elaborate, form certain pre-requisites 
for additional computer activities. 

Micro-computers are being util- 
ized in museum exhibits in two ways. 
Some are complete, stand-alone , terminal 
oriented exhibits. These exhibits 
allow certain energy topics to be intro- 
duced to the public, as well as provide 
a means for receiving direct feedback 
as to public opinion. Longer range 
plans call for building micro-computers 
directly into certain interactive 
exhibits . 

Beyond the direct utilization of 
nicros in exhibits, the museum is an 
active resource for computer technology. 
This is accomplished in several ways: 
oy offering beginning classes in micro- 
computer technology and programming, by 
sponsoring computer activity events at 
the museum, and by actively soliciting 
and promoting community participation 
In museum activities and developmental 
pro j ects . 

Moving Micros into the Museum 

The American Museum of Energy in 
Dak Ridge, Tennessee (AME) , has recent- 
Ly initiated a program to introduce and 
Jevelop micro-computer technology in a 
nuseum environment. The need for such 
a program ties in very closely with the 
current energy situation in the United 
States. The AME operates under a 
contract from the Department of Energy, 
and has as one of it's main functions 
to increase public understanding of 
science and technology, with particu- 
lar emphasis upon energy issues. Since 
the energy program that President Carter 
announced contains a major shift in 
emphasis away from developmental energy 
programs towards fossil fuel usage and 



conservation methods, the need to 
educate the public as to the real 
energy situation and what they can do 
about it is more urgent than ever. 
It is the feeling of the museum staff 
that microcomputers can play a major 
role in increasing the effectiveness 
of this educational process. 

Studies performed at this museum 
and others indicate that a great deal 
of care must be taken in planning 
exhibits if they are to successfully 
transfer meaningful information to a 
visitor. The average time spent at an 
unattended exhibit varies between 30 
seconds and several minutes. Thus 
exhibits cannot rely too heavily on 
written text, but must incorporate 
interesting graphics and audio-visual 
presentations. The current tendency 
at science and technology centers is 
to design interactive exhibits with 
which visitors can participate. Most 
exhibits currently manufactured employ 
hard-wired circuitry and electro- 
mechanical devices, making them expen- 
sive to design, implement and change. 
Again, the feeling at AME is that 
micro-computers can make a significant 
impact on exhibit and display technol- 
ogy. So, the AME decided to take the 
bull by the horns and instigate a 
program to develop and implement this 
technology. 



Who's Involved 

The primary 
behind this move 
the chairman of 
Oak Ridge Associ 
is well acquaint 
technology, havi 
of the Lawrence 
Berkeley. Durin 
was responsible 
Hall's public ac 
program which h 
tremely successf 

However, at 
Science, as well 
and technology c 
almost exclusive 



motivating force 
is Robert F. Content, 
the Museum Division of 
ated Universities. He 
ed with computer 
ng served as asst, dir. 
Hall of Science at 
g his tenure there, he 
for developing the 
cess to computers 
as proved to be ex- 
ul. 
the Lawrence Hall of 
as at most science 
enters, there is an 
reliance on mini- 



WEST COAST COMPUTER FAIRE 



169 



BOX 1579, PALO ALTO CA 94302 



computers. It is now time to put micros 
in the museum. 

The first step in this project was 
to acquire some computer equipment. The 
museum already had two Wang 2200's, and 
a PDP-8, but these are utilized for in- 
ternal data processing and in a couple 
of existing exhibits. To get things 
going, four SOL ' s from Processor Tech- 
nology and two Silent 700 terminals from 
Texas Instruments were purchased. 

Next, a specialist in microcomputers 
and personal computing, Jim Dunion, was 
hired to head up this developing program. 
He brought with him a Compucolor 8001 
with a floppy disk. At that point, the 
museum faced a somewhat unusual situation, 
equipment rich-people and software poor. 
With that in mind, the watchword of our 
program became - cooperative development. 
In a nutshell, we hope to solicit help 
from the local community in Oak Ridge and 
Knoxville in developing microcomputer 
technology in the museum. We provide 
the equipment , the educational training, 
and the projects. In turn, we hope to 
receive time and software from interested 
individuals . 

Major Areas of the Program 

We have broken our program down into 
four main areas. 

1. Social 

2. Educational 

3. Developmental 

4. Communal 

The social aspect of our program is 
intended to generate interest in the 
museum's computer activities. A" little 
showmanship, if you will. We have 
started a series of computer activities 
nights at the museum. These sessions 
are aimed towards familiarizing the gen- 
eral public with the capabilities and 
benefits of personal computing. Each 
session is keyed around a central theme, 
such as the recreational uses of computers 
or computers and art. A typical night 
will consist of a movie about some aspect 
of computers, a technical talk (in terms 
that laymen can understand) , several 
systems running demonstration programs, 
and refreshments. 

Our educational program will proceed 
in several discrete steps. Initially we 
are holding a two to three hour seminar 
called, An Introduction to Personal 
Computing. After presenting this talk 
several times, we will initiate two 
short courses, 

1. Understanding Personal 
Computers 

2 . Beginning Programming in 
Basic 



After these classes have been 
conducted a few times, we will then 
begin offering more specialized topics 
such as: 

1. Game Playing with 
Computers 

2. Advanced Programming 
Techniques 

3. Special Projects 

4. Computers for Kids 
One of our goals for this part 

of our program is to interest local 
programmers and personal computing 
enthusiasts in teaching these and 
other courses. Hopefully also, some 
of the students that we train can 
then turn around and teach future 
classes . 

The developmental portion of 
this program promises to be one of the 
more interesting aspects of our 
approach. We have identified four 
major research areas of interest for 
developing micro-computer technology 
in the museum. We have begun acquiring 
additional hardware to configure 
systems in different work stations 
for these projects. As local students, 
hobbyists or just interested indiv- 
uals begin working with us, we will 
coordinate special assignments in 
these research areas to provide some 
training and experience for the 
workers, and of course, exhibits for 
the museum. The research areas are: 

1. Verbal Information 
Systems ' 

2. Color Graphic Display 
Technology 

3. EA.ec.trojT(i_c__Bul.letin 
Boards 

4. Automated Exhibit 
Technology 

Verbal Information Systems 

The primary goal of this project 
is to develop an energy information 
system that anyone could walk up to 
and ask certain questions about energy 
technology or energy policy issues. 
The catch is, we want the input to be 
spoken language, and the output to be 
synthesized speech, clearly not a 
trivial task. This project will involv 
voice recognition, speech synthesis, 
natural language understanding, data 
base management, and artificial intell 
igence. In addition to a SOL computer 
we will add a voice recognition unit 
and a speech synthesized for the 
initial system configuration. 



WEST COAST COMPUTER FAIRE 



170 



BOX 1579, PALO ALTO CA 94302 



Co lor Graphic Display Technology 

One of the systems we have avail- 
able is a Compucolor 8001, which is a 
color graphic device. We already have 
a number of interesting games and demon- 
strations for this system, but the 
feeling of everyone who sees this sys- 
tem is that we are just scratching the 
surface. We need to develop programs 
that make the creation of displays and 
games easier. Such programs might 
include a complete graphics package 
(vector graphics are already provided) , 
a rubber-band drawing system, an ani- 
mation package, etc. 

We already have some specific 
exhibits in mind to use this system. 
Particularly in light of the fact that 
Intelligent Systems Corporation, who 
manufactures the Compucolor, is prepar- 
ing to announce the Compucolor II, a 
scaled down version rumored to sell for 
under $1000.00.; We plan to place an 
orientation device in the lobby of the 
museum that will present certain infor- 
mation about the museum. One thing that 
will be displayed will be a floor plan 
of the museum. Visitors will be allowed 
to specify certain rooms of the museum 
on the display (probably using a light 
pen) , and then receive more information 
about the exhibits in that room. We 
feel that if visitors have an overview 
of the museum before they start their 
tour then the visit will be more mean- 
ingful . 

Another use for this system will 
be to provide interactive simulations 
of such things as global energy systems, 
household energy conservation, nuclear 
reactions, etc. 

Finally, we are designing several 
games oriented around energy. These 
are right now called The Energy Game 
and Embargo. 

The hardware for this project 
area is already complete. 

Electronic Bulletin Boards 

The Electronic Bulletin Board will 
provide a message posting system, text 
editing and word processing, newsletter 
preparation and information about on- 
going projects (both energy and compu- 
ter related) . 

We are currently looking at text 
editing and word processing software 
for this project. In addition, we 
plan to install a telephone interface 
so that the system may be accessed 
remotely. Currently, our plans call for 



using one system to act as the phone 
access and also to control a hard 
disk mass memory device. This in 
turn will interface to the other 
systems for both remote access and 
downline loading of programs. 

Automated Exhibit Technology 



The purpose of thi 
be to provide expertise 
electro-mechanical devi 
this is the most specul 
projects. Our first goa 
develop a small, inexp 
to work with. We will 
the basic design presen 
Heiserman. We also wan 
a visual input system, 
we will be very active 
United States Robotics 



s project will 
in controlling 
ces. Right now 
ative of our 
1 will be to 
ensive robot 
probably use 
ted by David 
t to install 
Naturally , 
in the 
Society . 



As is probably apparent from 
the description of these research 
projects, we hope to make them 
exciting and interesting enough so 
we can attract a lot of local talent 
to work with us. 

The Museum as a Community Resource 

As part of our program to attract 
co-workers, the museum is actively 
promoting the idea that we are a 
community resource. We are doing this 
in several ways. First, we are 
sponsoring and supporting local 
computer hobbyist groups. There is a 
club in Knoxville that has been active 
for some time now, and a club is just 
forming in Oak Ridge. The facilities 
of the museum are available (to some 
degree) to these groups. The actual 
mechanisms of this availability will 
have to be worked out as the program 
proceeds . 

We have also initiated a lecture 
program that is geared towards local 
civic groups. The main topic is 
Computers and Energy (with a huge 
plug thrown in about the museums 
computer activities, naturally). 

Finally, we are trying to acquire 
as many publications in the personal 
computing field as possible, so that 
they may be available for local 
hobbyists. We are also gathering as 
much software as we can, software in 
the public domain that is, and will 
transfer this software to interested 
parties. We are particularly inter- 
ested in software relating to energy 
or simulations related to energy. 



WEST COAST COMPUTER FAIRE 



171 



BOX 1579. PALO ALTO CA 94302 



HELP 



The museum's program is still in 
the developing stage. One thing we want 
to emphasize is that we very much want 
and need as much help as possible in this 
endeavor. Advice, software, hardware,... 
are actively solicited. We hope to 
expand this into a national program, and 
towards this end we will be publishing 
a newsletter tying together the personal 
computer movement and the Association 
of Science and Technology Centers (a 
group of 80-100 such institutions) . This 
newsletter will be available to hobbyist 
clubs, schools, etc. 

The impact of micro-computers on 
our everyday life continues to grow. 
We think that their introduction into 
a museum environment will be very 
significant indeed. Perhaps in a few 
years museum exhibits will resemble 
Disneyland rides. With your help, and 
our efforts, we'll put micros in the 
museum. 



WEST COAST COMPUTER FAIRE 172 BOX 1579, PALO ALTO CA 94302 



THE MARIN COMPUTER CENTER - A NEW AGE LEARNING ENVIRONMENT 

David and Annie Fox 

Co-Directors of Marin Computer Center 

70 Skyview Terrace Room 301 

San Rafael, CA 94903 



Abstract 

Marin Computer Center is a project of Ulenar, a non-profit, educational 
corporation, whose main goal is to bring the wonders of advanced technology (computers 
and the like) within the reach of all people. 

We have set up 10 microcomputers in what was formerly the library of Oakview School 
in San Rafael, California. In a spacous, well-lit room, with beamed ceiling, orange 
carpeting a many plants, we've created the kind of comfortable environment that has 
never before been associated with computers. 

We will describe how MCC came to be, what it is, and where we plan to take it. 

How 1 1 A I I Began 

Marin Computer Center was seen as a vision at first. We came upon the idea - or it 
found us - quite unexpectedly in mid-August of 1976. How strange it seems now, and yet 
very natural all at the same time. 

To say that computers and the world they represented was far from the world that we 
inhabited then would be a gross understatement. At that time in our lives, and for 
several years prior to that time, we were "spiritualists" - lovers of the occult, 
psychic realm - followers of numerous "personal growth" excursions - always seeking. 
We considered ourselves very much the "humanists" - with our respective careers of 
teaching and counseling. 

We felt that not enough people were coming in contact with new ideas about 
themselves, not enough people were growing in their personal lives. The question was, 
how to introduce the vast majority of Americans to themselves. We took a look around 
and noticed the beginning boom of video games. What if we developed a video game in 
which people could learn more about themselves and their relationships with others in 
the process of playing? Of course, the stated purpose of the game wouldn't be personal 
growth, that would just be a side effect of playing it. 

From this idea we jumped to a fantasy of a huge complex similar to Disneyland. The 
main difference would be in the participation level of the visitors. Disneyland is fun 
but it is essentially a place where they "do it to you". You watch animated dolls while 
riding on a boat or go for a submarine ride and watch sea serpents looming at you. No 
one is given an opportunity to interact with the environment, to play with the 
environment in a way where some new and unique learning experience would result. We 
envisioned a technology pi ay I and where all this could happen. To actually "person" the 
deck of the USS Enterprise with other visitors and make contact with other worlds. To 
warp your own intergalatic vessel around the universe while looking through a three 
dimensional viewscreen and experiencing the force of acceleration. To feel 
weightlessness in a zero gravity room. The movies "Westworld" and "Futureworld" are the 
closest we've seen to this idea. Of course, the conflicts of man versus machine in 
those films represent the fears we wanted to help people overcome in order to make the 
most of technology. 

With our long range goals set, we had to find something which we could accomplish 
with today's technology. The concept of the Marin Computer Center was born. We 
embarked — whole-heartedly without a backward glance. It seemed as if we had been 
running full steam in one direction - then one day screeched to a halt for no externally 
apparent reason - and zoomed off at twice the velocity down a new road! 

It may seem strange that two people with no technical background would be audacious 
enough to enter the hallowed grounds of "computer land", but somehow our naivete has 
served to make the whole thing unique and appealing in the eyes of others. 

We created Marin Computer Center because we felt that there needed to be some 
educational facility that would bridge the gap between peoples' fears and their natural 



WEST COAST COMPUTER FAIRE 173 BOX 1579. PALO ALTO CA 94302 



curiosity about computers. It seemed evident to us that the rapid growth of the 
personal computing industry would result in a "computer in every home" by the early 
1980's. Judging that as an inevitability and evaluating the prevailing attitude about 
computers, it seemed obvious that people needed a painless way to ease themselves into 
the Computer Age. 

Many people feel that computers are cold, dehumanizing instruments of 
totalitarianism. The image of Big Brother and the "Computerized Society" seem to go 
hand in hand. At least that has conventionally been the fictionalized view. We would 
be the first to admit that in the recent past computers have been used in ways that have 
resulted in general feelings of powerlessness and compartmental ization. However, it is 
important to distinguish between computers (the species) and how they've been used. In 
other words, it is short-sighted to condemn a device simply because of the misuse and 
abuse it has suffered at the hands of people with something less than the "common good" 
in mind. 

Alarmists and political paranoids argue that computers are potentially dangerous in 
that they can be used to store incredible amounts of very personal data and then recall 
that information at an astonishing rate. They become uneasy at the thought of the 
"Master Computer" controlled by the CIA. 

The Computer is a powerful tool. And it, like many powerful tools throughout 
history, has been used and misused by people who seek power for purposes of both good 
and ev i I . 

When the printing press was first invented, the church began to fear its use for 
the purpose of widespread propaganda against Church Doctrine. They launched their own 
campaign against the machine, condemning it as a tool of the Devil. One would have to 
admit that there have been some pretty libelous, degrading and socially unredeeming 
things that have been presented to millions of people in the form of the printed word. 
However, one would not be hard pressed to think of just a few of the beautiful, 
inspiring, and beneficial things we have experienced through our exposure to words in 
print. 

So which is it? Tool of the Devil or Invention of Enlightenment? Actually the 
printing press is neither. The prnting press is just a machine that prints words on 
paper. The discussion is arbitrary and meaningless. The same is true of the debate 
about the potential joys and evils of a computerized society. 

Computers are here to stay. And the general public needs to start taking 
responsibility for its own personal participation in the world of computers. Because 
they are such "all purpose" machines, it is up to us to decide which of their various 
purposes are ones that we want to support. 

Marin Computer Center's main goal is to "introduce people of a I I ages to computers 
and. -the advanced technology which they represent In order that anyone wight begin 
participating in the process of computer assistance for society". 

When we started we felt certain that our objectives were valid and would serve a 
valuable function in this society. But lofty goals and innovative plans are meaningless 
if they cannot be manifested in the physical universe. And in order for our dream to 
take a real form we needed money. 

Our quest for capital led us to dozens of private foundations. We spent six months 
peddling our grant proposals with no success to speak of. 

For long periods of time our goal seemed extremely distant and as likely as a 
winning sweepstakes ticket. In the face of such overwhelming odds and dispair, were we 
discouraged? We sure were! Weeks went by and nothing happened - no forward movement; 
our plan was stagnating and so were we. Many times it seemed as if we continued with 
our phone calls and letters just to spite all the people who thought we were crazy to 
persist with an idea that couldn't get off the ground. And I'm sure we must have been. 
Crazy enough to continue persisting even though the Foundations weren't exactly beating 
a path to our door, we knew it didn't mean that money couldn't be obtained through 
another source. 

So we did what most people do when they need money - we hit the banks. And lo and 
behold, with the help of a friend (with more financial credibility than we had) our loan 
application was approved! 

That was in July of 1977 - a full eleven months after the whole idea was hatched! 
In the two months that followed, we rented 5,000 square feet in a beautiful school 
building, ordered and received nine Sol-20's and one Equinox, obtained some programs, 
invited 300 people to an Open House, placed three ads in local newspapers - and held our 
breath . 



WEST COAST COMPUTER FAIRE 174 BOX 1579, PALO ALTO CA 94302 



Visiting the Center 

On September 10th we opened our doors - at long last Marin Computer Center had 
crossd over into the physical universe. Over 700 people showed up for our Open House 
celebration and during the past six months they have steadily continued to come. Little 
children with their parents, neighborhood kids stopping in after school, handicapped 
children and adults, older people - all with their interest in computers to guide them. 

MCC was created to give people an experience of computers and the advanced 
technology which they represent. In the first few months that we've had our doors open, 
we have in fact been providing that kind of experience in addition to many other kinds 
of experiences that we had not anticipated. 

For example, on Saturdays MCC provides a place for families to come together in an 
attractive and calm environment for a unique "learning experience". We see them come 
in, wide-eyed and slightly apprehensive. They have heard about this place from friends 
of theirs (who had "a terrific time") so they thought they'd see for themselves. They 
don't have any idea what to expect and frankly, they've got their guard up. We greet 
them and make them feel welcome. We acknowledge the uncertainty they are exuding and 
they begin to feel that they don't have to pretend that they're feeling at ease when 
they're not - their anxiety is understood and then they begin to relax. 

We tell the newcomers about our set-up, in terms that they can relate to. We talk 
about why we've created this center and that we're glad that they've come to explore. 
After talking for a while, we suggest a computer game that might interest them, load the 
machine and let them settle in for the fun of confronting a new learning experience. 

. Adults and children relate to new learning situations in totally different ways. 
We have learned much from observing people with computers. Children seem to be very 
much attracted to the CRT terminal - because of their familiarity with TV and home video 
games, children between the ages of 7 and 10 feel very much at home with our 
microcomputers. Their attitudes towards the computers are open, eager and an almost 
matter-of-fact acceptance of the things that the technology of today has managed to 
accomplish. Older children, while equally open, seem to be more apreciative of the 
wonder of it all. They have reached a point in their own cognitive development to be 
able to imagine in abstract terms what a computer is and how it manages to do what it 
does. (There is a greater preponderance of 14 year old boys who frequent the center 
than any other age group.) So although children of different ages may be experiencing 
the computers differently, they all are unanimous in their enjoyment of and fearless 
approach to the machines. 

Adults, on the other hand, are less likely to welcome the challenge of this 
particular "unknown" with open minds. Adults come to the center with the whole gamut of 
preconceived attitudes, ideas and beliefs about computers. Their experience may have 
been in the form of a mistaken IRS refund, a cancelled magazine subscription that kept 
on coming or other annoyances that have been blamed on a "computer foul up". With these 
kinds of things in mind, many adults come to the computer center ready for a fight, it 
seems. They are sour-faced individuals who wish that the animal "computerectus" would 
go on the endangered species list and not survive. Then there are women in the 35-50 
age group who feel intimidated by the "superior" intelligence of computers. They are 
embarassed that the computer will make them look foolish by knowing more than they do. 
And finally there are the older adults (in the 50-70 age range) who are bewildered by it 
all. They feel that the world is just moving too quickly and that they are being left 
behind. 

After a direct experience with computers, one's fears are seen as groundless. Then 
the individual creates the opportunity for him/herself to really explore the computer as 
a new personal medium of creative expression. 

One of the ways both adults and kids can do this is by taking one of our classes in 
computer programming. The class is really an introduction to microcomputers and the 
computer language BASIC. The course covers a brief history of computers - through 
vacuum tubes to transistors to integrated circuits to large scale integration; 
discussion of how a computer works and then right into learning the language and 
creating your own programs. 

The class is for absolute Beginners - no prior knowledge is assumed or expected. 
Since we personally tiptoed into the field without the usual prerequisites we fully 
understand and empathize with the fear and general uncertainty people bring with them 
into our classes. Because of this empathy we are particularly good at creating a safe 



WEST COAST COMPUTER FAIRE 175 BOX 1579. PALO ALTO CA 94302 



learning environment for them to explore these "intelligent" machines. 

Graduates of our courses have gotten right into the process of using computers in 
their lives for more fun, profit, and efficiency. Some examples are: the man who 
created a program to calculate the milk production of his goats, the teacher who used 
the course to create specialized curriculum for his junior high school deaf students, 
the woman who was in charge of the reservations department in a large airlines and 
wanted to have more knowledge of computers to increase her feelings of effectiveness in 
her job and the 14 year old boy who has created computer programs for the games of 
Yahtzee and Battleship. 

One's success at survival has always been based on the ability to adapt; a 
willingness to change. With the world's increasing rate of change we've all got a 
chal lenge just to keep up with it. And more important than keeping up with it is to be 
a part of that process of change. We at Marin Computer Center are giving people a 
wonderful opportunity to participate in that area of change in today's world known as 
"Computers". By directly interacting with computers, people begin experiencing new 
feelings of freedom and confidence, replacing their former fear and confusing 
overwhelm. 

All of these people have an experience at the Computer Center which enables them to 
step outside of their preconditioned feelings of hostility, fear and confusion and enter 
a new world. A world that is not the de-humanizing robot world that they first imagined 
- but a world of people and learning and change instead. It's an exciting new world, 
and there is a place in it for everyone. The child in all of us is fascinated by 
computers - the "New Age Toy, Tool and Servant" of Humankind. 




WEST COAST COMPUTER FAIRE 



176 



BOX 1579, PALO ALTO CA 94302 



ilUW 



-r^: 1 



Ludwig Braun, Professor, Department of Technology and Society, 
SUNY at Stony Brock, Stony Brook, F.Y. II?9^, yi&-?.k6-%UlS 



Educational technology has gone from 
the log ( for Plato and his student 
to sit on) in i+OO BC through the 
book in lk^ when the Gutenberg Bible 
became the first mass-produced book, 
to the personal computer whose genesis 
is reckoned to be either January 1975 
when the Altair was announced, or 
April 1977 when the PET was announced 
(depending upon you definition and 
your loyalties). 

Until now, students and teachers 
were involved in information trans - 
mission ; while, now, they can begin 
to think in terms of information 
processing — with the enormously- 
increased intellect-enhancement this 
implies. 

Because of the low cost and portabil- 
ity of computers like the PET and the 
TRS-80, educational computing sud- 
denly has become much more attractive 
than ever before. These computers 
are totally self-contained and need 
only an a-c outlet to operate. This 
means that learners can use computers 
anywhere without worrying about tele- 
phone locations, etc. The teacher 
can plan to bring the computer into 
the classroom or the office. Because 
personal computers are portable, 
society can think about putting them 
in neighborhood or school libraries 
so the kids ( or adults) can sign 
them out. The $600 price is low 
enough that parents can think ser- 
iously about giving their children 
computers for Christmas or as birth- 
day presents. 

The graphic capabilites of the PET 
and the TRS-80, although limited 
compared to very expensive graphics 
facilities, are very impressive at 
the price. Art teachers can give 
their students a new flexible medium 
to explore. One important advantage 
of the computer as an art medium is 
that the child can convert art in his 
mind into visual images without the 
manual dexterity required by clay, 
paints, crayons and other media. 



WEST COAST COMPUTER FAIRE 



The capability to speak and to re- 
cognize spoken words (a. la Speech- 
lab and Oomputalker) provides s Items - 
tive input and output modes to permit 
children or handicapped people to use 
computers; and provides teachers of 
languages with computer support in 
a new and interesting way. 

One of the most exciting capabilities 
of personal computer?; (to me at least) 
is the ability to connect to the real 
world through analog-to-digital (A/D) 
and d igital -to -analog (D/A) converters. 
This capability permits us to develop 
simulations which provide much more 
realistic learning experiences than 
is possible by more traditional com- 
puter methods. With a/d and D/A con- 
verters, the digital computer becomes 
an analog computer with all the advan- 
tages of the digital computer and none 
of the disadvantages of real analog 
computers. 

The most exciting possibility to im- 
prove learning environments is the 
combination of the personal computer 
and the almost-available video-disc 
system. Such systems have been called 
"intelligent video-disc systems" by 
Professor Bork of the University of 
California at Irvine. In Bork's con- 
cept, the computer and the video-disc 
player interact with each other and 
with the user. In such systems, the 
computer controls the video disc player, 
causing it to play a motion sequence, 
a set of still frames, an audio sequence 
or causing a computer program stored on 
the video disc to be loaded into the 
memory of the computer for subsequent 
execution. There is a feeling of ex- 
citement about the intelligent video- 
disc system, and the potential for 
dramatic impact on learning. Such 
systems are some time off (perhaps 3-5 
years), but will be worth the wait. 

The rate of development of personal 
computers and related peripherals is 
breathtaking. It is impossible to 
guess what new announcements will be 
made six months from now ( or even 
at the Second Computer Faire), but 
the consumer and especially the learner 
gains with every one. 
177 BOX 1 579. PALO ALTO CA 94302 



PERSONAL COMPUTERS AND SCIENCE MUSEUMS 

Arthur Luehrman 

Associate Director 

Lawrence Hall of Science 

University of California 

Berkeley CA 94720 

(415)642-4193 



ABSTRACT: 

Science Museums have a unique opportunity to educate a broad public about the use of computers. Less than 10% 
of today's high school graduates have laid hands on a computer keyboard, and even fewer of their parents have done so. 
Yet the needs, in terms of jobs and personal development, for computer skills is growing rapidly. With 50 million visitors 
annually and ties to local schools, science museums can play a critical role, and a few have. For many years, the Lawrence 
Hall of Science has had a vigorous computer education program based on its 100-port time-shared computer,with terminals 
in about 50 Bay Area schools, on the exhibit floor and in the classrooms at the Hall. Inexpensive personal computers are 
expected to increase our potential impact tenfold or more in a few years. Among other projects to be described during the 
panel are these: (1) Putting a dozen computers in a van and driving to schools and clubs to conduct workshops, (2) Plug- 
ging into exhibits computers with programs that ask questions about the exhibit or suggest activities, (3) Offering classes in 
which students will be lent computers to take home and work with, and (4) selling computer and application programs in 
the museum store. 



WEST COAST COMPUTER FAIRE 



178 



BOX 1579, PALO ALTO CA 94302 



PANEL: Personal Computers and Learning Environments 
TOPIC: Computers for Elementary School Children 

Bob Albrecht 
P.O. Box 31 
Menlo Park, CA 94025 



ABSTRACT 



They are finally here! The $600 plug-em-in-and-use-em What would I change to "improve" the PET? 

home/school computers are here! Not one, but two 

$600 computers are available! Wnat would ' chan § e t0 "improve" the TRS 80? 

The Commodore PET What do ' like about tne TRS 80? Dislike? 

The Tandy Radio Shack TRS 80 Wny aren > t there any easy-to-learn computers? 

Both are complete computers - the $600 price includes What wou)d you !ike t0 have in a nom e/school 

computer, memory, alpha numeric keyboard, video computer for kids? 

(TV) display and cassette recorder. 

Bye, bye paper Tape! 

Hello magnetic tape cassette! 

So, back to the classroom ... or the family room. For 
the next year or two or three I will be visiting elementary 
schools, helping students and teachers learn how to use, 
program and enjoy the PET and the TRS 80. You will 
frequently find me in the school learning center, 
resource center, or library where the computers will be 
an open resource, available to all students and teachers. 
Fifth and sixth grade students will learn to be 
"resource people" or "teacher aids". They will be 
available in the center to help others learn how to use 
the computer. 

Right now, there are very few programs available for 
our use, but people are working on that. There are 
no instructional materials, so I am developing "teach 
yourself" style materials to help students, parents 
and teachers learn to read and understand BASIC. 
Instead of the usual "math" approach, I am using a 
verbal and graphics approach. 

I will attempt to answer questions about teaching 
elementary school children how to use, program and 
enjoy the Commodore PET and the Tandy Radio 
Shack TRS 80 computers — at school, or at home. 
Questions mgiht include, but not be limited to 
the following. 

How do I teach my 4th grade child or student 
how to program in BASIC. 

How does an elementary school get started using 
computers? 

How do we overcome teacher inertia? 

Where do I get education software? Instructional 
materials? 

What do I like about the PET? Dislike? 



WEST COAST COMPUTER FAIRE 179 BOX 1579. PALO ALTO CA 94302 



BRINGING COMPUTER AWARENESS TO 
THE CLASSROOM 

Liza Loop 
LO*OP Center, Inc. 
P.O.Box 9^5 
Cotati, CA 9^928 

Many teachers ask, " Why is it im- 
portant for school children to become 
aware of computers? " My answer is 
this« 

o The computer is the most signi- 
ficant technological innovation since 
the printing press. You may prefer to 
compare it to electricity. Either way, 
the computer is too important to be ig- 
nored by established education. 

o Although not all school child- 
ren will become computer scientists, 
they will all be consumers. They will 
have telephones, receive bills, and 
shop at supermarkets. Therefore, they 
will all be consumers of computer ser- 
vices. If nothing else, they need to 
understand that computer service systems 
are designed by people and can be chang- 
ed by people . 

o Most school children will vote 
at some time in their lives. In this 
capacity they will have to make deci- 
sions concerning acceptable and abusive 
uses of computer technology, including 
uses of computers by the government it- 
self. 

o Finally, most people will work 
during some period in their lives. 
Studies perdict that over 80$ of the 
jobs available in 1985 will require some 
involvement with computers or their in- 
put and output. Since schools are sup- 
posed to address the problem of prepar- 
ing youth to emerge into the world of 
adult responsibility, it is hard to jus- 
tify not teaching about computers. 

Most students can develop some 
sense of what a computer is and what it 
is not. Fourth graders will avidly play 
computer games and many will choose to 
write their own programs rather than ac- 
cept canned material . Even much younger 
children rapidly develop an ability to 
manipulate a terminal provided the out-» 
put is on their level. 



What is Computer Awareness? It is 
the study of the computer system itself 
and the place of computers in today's 
world. It is significantly different 
from computer assisted instruction (CAI] 
which uses the computer as a delivery 
system for a variety of non-computer 
subjects. Computer Awareness includes 
units on operating the terminal, using 
games and other application programs 
( possibly some CAI ) , computer applica- 
tions found in the locality of the 
school, computer related careers and vo- 
cations, introductory programming in 
high level language ( perhaps Basic ) . 
On the secondary level it may go on to 
cover some electronics and Boolean 
logic. Computer Awareness is not Com- 
puter Science, Programming, Data Proces- 
sing, Electronics, or Computer Maintain- 
ance. 

Computer Awareness also differs 
from Computer Literacy. It omits the 
history of computers and deemphasizes 
skill in programming. It places more 
stress on experience with computer 
applications and less on vocabulary 
which is often meaningless to younger 
children and tends to be obsolete very 
quickly. 

Computer Awareness students do 
write at least one program. However, it 
may be as simple as a picture program 
using only PRINT statements. The exer- 
cize is intended to develop a sense of 
the relationship between the user and 
the programmer rather than a means to 
promote skill in programming. 

L0*0P Center, Inc. has tried a num- 
ber of different approaches to the sub- 
ject of computers in education. It ran 
a demonstration classroom and storefront 
drop-in computer center for two years. 
In September, 1977 » the storefront 
portion of L0*0P was closed in order to 
allow concentration on teaching the 
Computer Awareness Curriculum on site at 
various Sonoma County schools and to 
write a companion text book for the 
course. 



WEST COAST COMPUTER FAIRE 



180 



BOX 1579, PALO ALTO CA 94302 



In talking with school staff it be- 
came appearent that many teachers wanted 
a prepackaged curricular module which 
they could import into their classrooms 
with a minimum of effort. Others ex- 
pressed an independent interest in the 
computer field and shared in the belief 
that computers will become an integral 
part of organized education in the near 
future. L0*0P began to focus on the de- 
velopment of a Computer Awareness Pack- 
age and on presenting this material in 
courses for teachers at Sonoma State 
College. 

One constantly annoying obstacle 
to both LO*OP's storefront operation and 
to the development of an easily trans- 
portable Computer Awareness Curriculum 
was the lack of reliable, low-cost hard- 
ware. The Sonoma County Computer Club 
provided an on-going evaluation labora- 
tory for microcomputers as one member 
after another bought and struggled with 
kit computers which never quite lived up 
to manufacturers* claims of power and 
ease of operation. LO*OP borrowed and 
field tested many of them in classrooms 
only to spend most of one period search- 
ing for a disconnected wire or another 
watching paper tape load. 

The conclusion is that the Computer 
Awareness Package must include a fully 
debugged and assembled machine which 
speaks a high level language and comes 
up with not more than four or five in- 
structions from the keyboard. Currently 
under consideration are Radio Shack's 
TRS80 and the Commodore Pet. Both these 
machines speak reasonable Basic as soon 
as you turn the power on and cost about 
as much as a classroom movie projector. 

Within the next year, materials 
will be available so that every teacher 
may introduce Computer Awareness into 
his or her classroom. But, as we are 
all well aware, this project is only one 
tiny contribution in the field of com- 
puters in education. 



WEST COAST COMPUTER FAIRE 



181 



BOX 1579, PALO ALTO CA 94302 



Implications of personal computing 
for college learning activities 



^essqrch Scientist 




i'iie purpose of this article is to 
provide background inform ation for a 
session on "personal computers and 
1 earning environments 1 ' at the raire, a^-i 
..--erhaps more important, to stimulate 
continuing discussion of tnis topic 
among those who see the Proceedings, 
ihnt is said in the session builds on 
./hat is written here, but do not expect 
it to be the same. And six weeks after 
the raire we should expect to have new 
information, new ideas, and nev/ 
opportunities for expanded use of 
personal computing in college learning 
activities. Still this background 
information should be useful. 

The domain of personal computing I 
consider more broadly than just small, 
single-user machines. I visn to include 

some. Bxperiiinces with timesharing 

systems in oruer not to overlook useful 
ideas about communities of learners and 
occasions for professional communication 
within such communi ties. If we limit 
discussion to small (inexpensive, 
portable, individually owned) machines 
.ve are not taking advantage of decades 
■yf experience with personal computing 
using costly, fixed systems having the 
jower (processor speed, memory size, 
instruction set, and complexity) that 
Afill be characteristic of the small 
machine in a few years. I am convinced 
that the best personal computing is done 
today on single-user machines, but I 
haven't csiven up entirely on timesharing 
as a means to providing truely personal 
services. In any case, I want to have 
communication networks backing up 
single-user systems in education. 

The substance of this oackground 
statement is presented in five sections. 
The first is intended to provide the 
educator some indication of why the 
personal computing revolution is so 



important to computer use (and 
information nandling) in higher 
education. l he second section should 
inform the computer specialist or 
enthusiast aoout kinds of uses in higher 
education. ihe thiro. section offers a ( 
list of wnat I see to be needed to nelp 
along some noeoed changes in higher 
education. i'he last two sections 
provide a orief statement about the 
future an- a list of references and 
but jested readings on computers in 
nioner education. 



oiJMrlCAMCif i)r PcifSO/UL OOMPUTI .13 
i-\)K CdLLL-Jc LiiAtfNlUG 

Many colleges and universities nave 
acquired effective and economic 
time-sharing systems for use by faculty 
and students in teaching and learning 
activities. These can be expanded to 
accomodate tne increasing amounts of 
use. Also, they can oe extended to 
handle some new kinds of uses sucn as 
graphics ana information retrieval 
systems. However, some kinds of 
computing will be accomplished more 
economically with small and inexpensive 
computers for use by one individual or 
project at a tine. At the University o f 
Michigan the Center for Research on 
Learning ana Teaching is exploring 
various roles for these microprocessors 
gnu personal computers within college 
learning activities. 

Aspects of the revolution 

i'ne impact of personal computers on 
education in general and instructional 
activity in ^articular will oe 
considerable. Three aspects of tne 
p e r 3 o i \a I c oi.ip u t e r r s v o 1 u t i on ma y he 1 p 



WEST COAST COMPUTER FAIRE 



182 



BOX 1579, PALO ALTO CA 94302 



establish tiii.') case: numbers, -iccess, 

.illy Ci.'i ( K,l Oj. • 

personal computers wi LI be used in 
mucn larger nuiiiuers t:wr: instructional 
computers ivjve been or will be 
otherwise. i'he uajor computer-based 
instruction facility so far nas been tne 
PLATO Computer-based Instruction dystem' 
at tne University of Illinois in w.-iich 
the number of simultaneous users are 
counted in tne hundreds. Jhanvies in the 
system will expand ttie number of users 
to thousands, i'he :;icst common 
timesharing systems in use in colleges 
toaa/ are ouilt by Kewle t t-Packnru and 
jigital equipment. Although these are 
small systems (four to 60 users each), 
the total numoer of simultaneous users 
served 0/ the huncreos of systems 
throughout trie country is counted in the 
thousands. with continuing sales to 
colleges this number •■/ill expand to the 
tens of thousands. At least' I 00 ti;;ies 
lore personal computers v/ ill be used in 
education activities, 'ihe first line 
sec up to na-~s produce conouters was 
designed to put out 20, CO./ per month. 
<itn three companies now delivering 
nachines, the really large (potential) 
Producers have not yet announced their 
jroducts. I expect nearly half a 
nil lion units to 09 solo in the first 
/ear, and in a few years tne nu;nber use J 
in education will be counted in the 
nil lions. .-'ineri the measures of expense 
and capability of a technology improve 
:)v two or three orders of magnitude the 
effects are more than jus t quantitative. 
Personal computers will brinq about 
qualitative changes in education in the 
nome an-i pernaps in colleges. 

Ihe seconj characteristic of 
personal computers is responsiveness. 
i'he nacnine is as available and responds 
as quickly as a personal and portable 
electric typewriter or television, iiut 
■lore than that, it responds effectively 
to :nore complex directives, rearranqino 
and processing information in n personal 
-vaynot possible with a shared system 
iesiqned for the average user. 
rurthermore, the high rate of transfer 
of data between memory, processor and 
display screen opens up new 
opportunities for real-time animations 
as well as data analysis. 

f;ie third aspect of the revolution I 
want to emphasize is personal control. 
The owner of a personal computer 
let ermines tne uses of one or more 



persona i machines, and snnges cheir 
cuaracter Lsti cs to personal needs an-j 
preferences. Perhaps the most important 
aspect or coutroi is tne intanoiole 
consideration of self-determination* 
the owner can liberal ly wrap his or ner 
arms around the machine, carry it about, 
paint it purple, arid love it 
as a pet, as well as re program it 
according to personal preferences. 

;e tailed- characteristics of personal 
computers arr' their current uses are 
receiving careful attention by CKLi 
staff at tne university of Pichigan. 
fheso notes attempt only to list a few 
characteristics and limitations. 

Li mi tat ions 

In 19/'/ tne limitations of personal 
computers may .have outwei:;neu their 
observed advantages for use within 
col le fie learning activities. However, 
19/.) brings more reliable and oowerful 
models of those inexpensive devices. 
Indeed, we can expect the capabilities 
to at least double each, year without an 
increase in production costs for at 
least tne next twenty years. 

Pa 1 i auil i ty has been a major problem 
vitn many nicrocompter systems to -Pate, 
do w tiiat personal computers are beinu 
mass produced, tne inteoraced systems 
perforin much more reliably tnan their 
predecessors which were usually built oy 
nobbiests from kits. However, the 
construction of peripherals for 
printing, storage ana the like does not 
measure up i? the same standard of 
reliability. ihe major problem faced ov 
manufacturers of peripherals is a need 
to or in ; out a very low-cost device, 
somethin.; comparable with the low cost 
of tne microcomputers themselves. iwe 
electromechanical devices for printing, 
drawing, or storing information on 
magnetic tape can not be both cheap and 
reliable. However, the prospects are 
good for reliable peripherals using new 
technical developments which will 
eliminate entirely the noving parts! 

Speed of processing is a 
consideration. Happily, .nost 
instructional applications involve 
simple programs and tne observed 
response from the personal computer is 
not distinguishable from that of a 
timesharing system. However, some 
applications require many computations 
(eg, for reducing data or analyzing 



WEST COAST COMPUTER FAIRE 



183 



BOX 1579, PALO ALTO CA 94302 



text), *i">j tne delays ma/ just be too 
great for a student interacting at the 
slow speeds of an inexpensive, personal 
compu ter. 

Personal computers do not now 
provide inexpensive access to large data 
oases, aiij updating tne Jat^ base i s an 
expensive operation if every user has an 
individual copy. Therefore, the use of 
personal computers in records handling, 
data reduction, ana shared files is not 
advisable with IvY/ technology. Tnis 
could cnange by the end of 19/d, 
no-// ever . 

gompacibili ty a;non.-i different 
personal computers imposes so:ne Units 
on exchange and mar ke ting of programs. 
Actually tins limitation is no more 
severe than for sharing pronrams among 
different computers made o/ the same 
vendor. dome of the reco emendations 
given in the third section of this paper 
will help remove this limitation. 

Probably tne standards that emerge 
will depend on certain features of the 
technology! inexpensive, read-onl/ 
storage; processors which are less 
expensive than tne medium- of curriculum 
storage; and audio-visual media wnich 
incorporate digital logic and storane. 

Approaches to applications 

■ dthin current liiiii tations of 
reliability, speed, storape, and 
compatioilit/ CtiL'i staff already find 
many applications for personal computers 
wfthrn the University of •Vichinan today. 
4a chines becoming available in the first 
half of iy/;3 will make valuable 
auditions to the resources for learning. 
Some machines acquired by individual 
faculty nemoers are being used in 
classroom demonstrations. At least 
three curriculum development projects 
are using personnl computers in 
connection with laboratories 
(preparation for regular lab sessions, 
information processing aids in carrying 
out the work, and data Generators for 
simulated laboratory activities). 
Libraries are considering use of 
microcompters in providing services on 
campus. ' Many individual students have 
purcnased machines, and some of these 
are oeing used for word processing 
(preparation of papers), computation, 
and information organization and 
retrieval. The School of '4usic is using 
a microcomputer system for music 
analysis and synthesis, and some 



else ironic music composition. 

joma tnou mt about the future of 
computing in education e.n-i society may 
ielo college teacners take a useful 
perspective oi~\ computer use o/ students 
tou.a'/. i liis topic has been written on 
at l«no-tn; i will list just three 
aspects i believe to oe very significant 
for educators considering the general 
tooic of computers in education: 
computer literacy, home entertainment, 
and comouter-basec videodiscs. 

\ oeneral literacy about computers 
is likely to be as widespread as 
knowledge of driving a car or skills for 
use of a liorary. Already electronic 
calculators nave oecome so inexpensive 
and straightforward to use that nearly 
anyone enn acquire a convenient device 
to" carry in a pocket, purse or wear on 
wrist. i'he impact has been primarily 
om of accomplishing calculations more 
reliably. As general information 
processing facilities become as common 
as tne portable home typewriter or 
television set (indeed, they will no 
douot oe incorporated within home 
tyoewriters and television sets), =) 
general literacy about their use will 
develop rapidly. To some extent tnis 
literacy is alreauy oeing accomplished 
in computer courses in intermediate 
scnools throughout the country, 
oel f-instruclion at home will take care 
of tne rest. All college students will 
kno,v now co A uu .iXPbUi 'i0 use comouters 

in is year, microprocessors- have 
oecome a significant part of the home 
entertainment industry. Computers are 
evident in video names which duplicate 
arcade devices, and in board games which 
play a fair game of chess or checkers or 
othello or backgammon. As 
general-purpose computers become 
incorporated in home entertainment 
centers, the capabilities for 
simulation, model line; and records 
handlini expand rapidly. An important 
oart of the nome market will be 
self-education, tfany companies will be 
selling learning packages which include 
computer programs to rur. on the home 
computer as well as supplementary 
materials and guidebooks. 

N-.5W developments in videodiscs nay 
revolutionalize personal computers, ror 
some years companies have been working 
on one version or another of the home 
videodisc. Jne of the driving forces 
behind this movement is the expected 



WEST COAST COMPUTER FAIRE 



184 



BOX 1579, PALO ALTO CA 94302 



market for old movies and special 
interest programs in the norne. However, 
in order to solve some of the technical 
proDiems of retrieving the bits of 
information which make up a video 
signal, the researchers turned to 
certain Digital techniques which are of 
considerable interest to computer 
designers. It appears now that 
including a microprocessor in the 
videodisc player will make it more 
practical, reliable, and economical. 
Computer control of the videodisc 
player provides an exciting resource for 
educational use of microcomputers. A 
small archive of movie clips (30 minutes 
total) or a very large archive of color 
still frames (54,000) or any combination 
can oe searcned and controlled by a 
personal computer. This means one can 
retrieve, display at regular speed, slow 
motion or still frame, and move to 
anotner section of the file based on 
instructions from the push-button 
controls and a history of interaction 
with the particular learner. 
Furthermore one can set up the personal 
computer to interpret the 54,000 frames 
of video as nearly a trillion bits of 
digital memory. This reduces 
consideraoly the present restrictions on 
microcomputers for handling large data 
oases. 

These future prospects are quite 
exciting and prooably will bring 
significant and desired benefits to 
higher education and to society. A 
summary of trends concludes this 
section. 

Trends in computing, communication and 
the locus of education 

A number of changes in the 
technology of computing and 
communications, and changes in education 
and society, have increased professional 
interest in computers in learning and 
teaching, hour points are listed here: 
The low cost of microcomputers merit 
rethinking uses of technology in 
education. Inexpensive communications 
may shift the role of centralized 
educational computing. Incentives will 
improve for commercial production of 
materials for training and continuing 
education. Home computing, combined 
with other technology, will support a 
trend toward more education in the home. 

ihe low cost and easy use of 
microcomputers are providing access to 



1 '* j'Ia ; j.i I o ^ i o s^ x v " uvjiiipu i, j. : r.j iiiCl'jOllig 

graphics for many more people and 
projects. video techniques, such as the 
microcomputer-based videodisc player, 
are enhancing graphics and low-cost 
storage for instructional computing 
(Bork, Luehrmann pr\<i Schneider, in 
press). The economic and social 
pressures on educational institutions 
are forcing tie cis ions by state and 
federal agencies, and by individual 
institutions, to support additional use 
of technology. 

Inexpensive communications have oeen 
promised via satellites and optical 
fibre telephone lines. Very low cost 
and very large memories are proposed for 
educational time sharing system's. dhen 
these developments are realized, tne 
cost of centralized educational 
computing systems will drop 
significantly. i'his cost improvement 
will help restore some of the education 
market for timesharing taken over oy 
personal computers, but also it will 
increase the use of personal computers 
through low-cost support networks. 

Commercial incentives are emerging 
in tne U.S., now that packaoing is 
becoming more practical and the 
educational market is becoming 
interlinked with other computer uses, 
t-or example, recreational uses of 
personal or nome computers include some 
instruction for the very young learner. 
And professional uses by tne adult 
practitioner include some new 
opportunities for learning. New markets 
for training and continuing education 
nave focusea attention on the need for 
improved instructional desiqn. 

People who work on computers in 
education will have to pay attention to 
the dramatic development of personal 
computing. Already considerable 
education does take place in the home, 
and more money is spent on home 
education materials and correspondence 
in tne U.S. than on institutionalized 
education directly. I am sure a great 
deal of computer use in education and 
training in the next decade will be 
through inexpensive but rather capable 
machines purchased for personal use in 
the home and office. 

All tnese current developments can 
not oe covered in the pages of this 
article or in the corresponding session 
at the Faire. However, this article car 
be used together with others in the 



WEST COAST COMPUTER FAIRE 



185 



BOX 1579. PALO ALTO CA 94302 



Proceedings and tne suggested readings emitters in education ars essential to 

to expand your view of microcomputers success of new programs in public 

and uses of personal computing in nigher schools. 

education and to establish means to keeo Psrsonnl coi.iputino in homes shows 

in touch with a diverse and rapidly the greatest prospect for impact on 

changing fielu. learning about the computer. &/ the enc 

of IWd, personal computers //ill be in 

use in nearly half a million homes and 

aIAJS Or USti offices. lany of these devices may be 

used only with packaged application 

Learning about the computer programs, as are the preprogrammed video 

Learning about the computer is the games? but all tne equipment will be 

most rapidly growing area of computer programmable and include convenient 

assisted learning. It's use in CAL local storage for saving user-desianed 

follows quite naturally from the programs, 
introduction of computers into many 

parts of society and into homes Learn in j through the computer 
directly. As experience with computers In the past, the core of CAL 

becomes commonplace for a class of activity was dri 11 , practice, diagnostic 

learners, educators can use the testing, and question and answer 

computer and its procedures as metaphors tutorials. xoday these continue to be 

for' other processes and constructs. the major modes of learning in 

education about computers provides tools operational U.S. systems (e.g., the 

useful in other learning. The following PLAi\) 3 /stem of the University of 

paragraphs comment on computer literacy, Illinois and Control Jata Corporation, 

professional development, in-service Computer Curriculum Corporation systems, 

training of educators, and personal Mewle tt-Packard and Digital equipment 

computing. timesharing systems, and tne Univac 

Computer literacy for all students system), uven though these modes will 

is established now in some colleges. oe overshadowed for a time by a dramatic 

Computer programming may oe required (or growth of learning about and learning 

assumed and offered only as a non-credit with tne computer, they will remain 

course) so computing skills can be strong instances of computer 

assumed in mathematics, sciences, application, readily accepted because of 

engineering and some other professions. their familiarity, moderate cost, and 

the extent -of c-^mputer literacy convenience of to.tal .systems. 

throughout tne U.S. is still very low, 

out inexpensive computing devices and Learning with the computer 

the popularity of the activity with ihe computer as an aid to learning, 

students will increase the percentage and an adjunct tool for tne learner, is 

dramatically in the next few years. taking on new dimensions now that 

Professional development regarding computing is inexpensive and portable, 

computer use is common for many areas Hand calculators used in the laboratory, 

already; accountants, bankers, engineers classroom, and study hall have taken on 

and others whose professional activities the characteristics of computers* 

depend on automatic computation and stored programs, program libraries, 

information processing are refreshing peripheral storage, printers, graphics, 

skills and ootainina new ones. etc. As these least expensive 

Additional professions are finding computing devices take on general 

computer assistance indispensible, and characteristics, the general-purpose 

information is offered through special computers are decreasing in price to 

courses and institutes for architecture, match the calculators. Practical uses 

law, medicine, and others. include simulation, gaming, problem 

In-service training of teachers is solving, and creative activities, 
essential if public education is to Simulation and gaming have always 

catch up with the rapid change of been popular with teachers and students, 

technology. University institutes offer .tow these entertaining activities are 

skills training during the school year appearing in academically respectable 

and in the summer. Sound information textoooks and laboratory materials, 
and constructive attitudes regarding Problem solving activities once 



WEST COAST COMPUTER FAIRE 186 BOX 1 579. PALO ALTO CA 94302 



required knowledge of programming, 
jnless cleverly imbedded in a tutorial 
sequence which prompted for the 
oarameters and equations or whatever was 
needed. Now problem-oriented languages, 
and familiarity with keypress sequences 
Dn programmable calculators, put problem 
solving in reach of any learner 
experienced in the discipline. Students 
can be asked, to turn to a problem 
solving facility on the CAL system (or a 
calculator at hand) to carry out some 
computation or modelling activity. 

Creative activities in education 
are aided by computers very 
"licely, at least in experimental 
systems. Perhaps the most impressive 
Dverall is the first approximation to 
the •• aynabook" developed by Alan Kay and 
nis colleagues (ly//). Young children 
are able to sketch, animate, compose 
Tiusic, arrange words in poetic forms, 
and carry on many other creative 
activities usually reserved for 
specialized and advanced users of 
computers. 

Learning support systems 

Computer managed learning is 
expanding within" the U.S., albeit 
quietly and often without any note of 
the computer role. A significant 
percentage of schools are using computer 
systems to aid in classroom management. 

Information management goes beyond 
instructional management to help the 
student as well as the instructor with 
information needs. Guidance systems 
have become quite popular, including 
SIGI of educational Testing Service. 

The automatic generation of learning 
and testing materials by computer will 
soon become a common activity among 
computer aids. Some tools are already 
q~uite popular, especially computer 
assisted test generation (Lippey, 19/4). 

Some pointers to current work in the 
United States have been provided within 
the text. The next section provides a 
sample of applications in various areas 
of instruction. 

Areas of instruction 

The broad range of computer uses can 
be shown by selecting some of the less 
likely uses in six areas of instruction: 
math, sciences, social sciences, arts 
and humanities, languages and 
communications, and the professions. 



The few instances given here represent 
only a small part of all the computer 
aided learning curriculum materials. 

Students in a mathematics course 
nave used a simple computer Inn gauge 
(LOGO) to generate a mathematical systex 
building from primitive elements. 

In a laboratory course in chemistry, 
preparation for use of titration 
equipment is aideu by conceptual 
experience provided economically to 
individual students who us* the graphic 
animation capabilities of the PLATO 
System before they go into the 
laboratory. 

A simulated laboratory provides 
research experience for undergraduate 
students in psycnolocy. Tne computer is 
used as a data generator. The value of 
the simulation depends on the activity 
of a classroom research community and 
the effectiveness of the teacher as a 
consultant. 

In the arts ana humanities computing 
serves as a medium of communication as 
well as a tool for creative work as part 
of learning. Perhaps the most 
interesting instructional use in 
humanities today is as an aid for 
scholarly work by the student. Graduate 
students of literature have used 
preprogrammed applications packages in 
exercises to determine authorship or 
analyze style. Undergraduate students 
explore rules of language through 
computer generation of poems and 
stori es. 

In language learning, aid in 
practice of skills is the dominant 
computer use. Contrary to the idea that 
the cost of development needs to be 
distributed over many students, two 
professors at Stanford University are 
programming computer assistance for a 
dozen specialized courses which have 
such low attendance that the department 
of Slavic languages can not afford to 
staff them. With this assistance 
(tutoring, drills, and practice 
exercises) the professors plan to .handle 
a larger numoer of students and in a 
greater variety of courses than 
previously possible. 

Preparation for professional work 
accomodates as much computer use in 
training and education as anywhere. Foi 
example, management games are very 
popular in business education and 
natural resources; simulated cases are 
used in lav; and medicine; and design 



WEST COAST COMPUTER FAIRE 



187 



BOX 1579, PALO ALTO CA 94302 



arv 



exercises depending on computer 
assistance are common in enaineerin- 
architecture. One of the most 
innovative applications is computer 
assistance for advanced seminars which 
bring together graduate students from 
different departments for study of a 
proolem area (e.g., energy conservation, 
regional planning, or technology 
assessment), .each participant uses 
computer assistance for organizing 
Ihfof nation from diverse and sometimes 
unfamiliar areas, communicating with 
others in the seminar between 
face-to-face meetings, and drafting 
working papers for review by the group, 
i'he organizers of the seminar keep the 
group focused on the problem without 
minimizing important background 
material, and call on resource people 
who might not otherwise have time to 
participate except for the convenience 
offered oy computer-assisted 
conferencing. This enables them to 
respond at any time of day, any day of 
the week, and from any user terminal 
which can connect to the computer or 
network handling the conference. 



.MciiJHU L/£VHLOPMi5h1'3 



^eeds and issues 

Further development of computer 
assisted learning in the U.S. will 
interact with a number of needs and 
i issues re la ted to the te chhoTbgy as we'll 
as to educational applications. Three 
such issues are listed here. 

Microelectronics technology, with 
rapidly decreasing costs which depend on 
greatly expanded usage, is forcing 
producers to find new markets for 
computers and related technology in 
education as well as throughout society. 
Appropriate uses in education require 
planning for and managing the design of 
the technological aias and their 
introduction into educational activities 
and institutions. Personal computing is 
being marketed strongly in the U.S. and 
will be taken up in the next few years 
by many people for entertainment and 
small business purposes. The equipment 
in which industry is investing large 
sums of money for the personal computer 
market will not serve educational 
purposes well without attention to 
considerations of design specifically 
for educational purposes. 



dinner education faces serious 
problems of financing, access, 
credibility, and the like. Certain of 
these difficulties can in part be ensed 
oy appropriate uses of technology, if 
resources are available at the right 
time and place for research, 
development, evaluation, demonstration, 
diffusion, and operation (Levien, 19/2). 
Otherwise, significant, opportunities to 
aid' all learners, and in particular the 
disadvantages, the handicapped, the 
gifted, and the isolated learners, -nil 
be lost. 

Jeneral literacy in computing and 
information systems will oe required by 
all, consumers as well as marketers, 
employees as well as managers, and 
learners as well as scholars, if societ; 
is not to be disrupted by a revolution 
encouraged oy rapid growth of technolog ; 
needed to support today's "information 
society." Computer literacy can begin 
in elementary school, arid sooner. 
However, oecause of the rapid 
introduction of the technology in many 
areas, computer literacy training must 
oe carried on in colleges, professional 
schools, certification programs, 
on-the-job training, community 
education, and public meoia reaching th« 

nomes . 

Of course, otner problems and issues 
may oe at least as important as the 
three listed above. However, this 
summary statement does express the 

nature of the current si ttia-t ion for 

computer assisted learning in higher 
education. 

Areas for possible action 

One major need at the national level 
is for coordination of planning and 
funding, taany important matters, e.g., 
goals, standards, and credibility, can 
be accomplished only through national 
discussion and action. fhe funding 
necessary to meet the needs in this are; 
can no longer be handled piecemeal 
through many different agencies. The 
commitment to excellence in education 
and to effective use of technology must 
come from the top. Information systems 
in education and society cut across man- 
areas* research, development, 
handicaoped, gifted, elementary, and 
professional. Useful information and 
good advice on these matters has been 
accumulating for over 15 years in the 
form of recommendations of national 



WEST COAST COMPUTER FAIRE 



188 



BOX 1579, PALO ALTO CA 94302 



commissions (National Academy of 
Sciences, 1966, PSAC, 1967, Commission on 
Instructional Technology, 1970, Carnegie 
Domxiission, 1972), professional 
organizations (e.g., CBMS, 1972) and 
review projects (Zinn, 1970, Anastasio 
ana Morgan, 1972, Hamolen, 1972, Levi en, 
19 72, Mosmann, l97o). A new commission 
or conference can begin with the 
recommendations of earlier efforts, 
review the present state: of technology 
3nd institutions, and take thoughtful 
action. Action is necessary now in 
response to the pressures and problems; 
furthermore, benefits are more easily 
justified today in light of the 
dramatically improved economics for 
applications of microelectronics and 
telecommunications. 

Designated centers with good support 
could provide sites of excellent 
training, development and research 
(Camegie Commission, 19/2). Potential 
jsers urgently need the most current 
information, the best training, and an 
optimal environment for development 
activity. Residencies would provide an 
opportunity for individuals to get away 
from regular responsibilities to 
initiate new work. Research 
opportunities would be increased 
significantly by bringing together 
creative individuals with necessary 
resources and a variety of learning 
environments. Large-scale exploration 
of technological opportunities and basic 
concepts of learning would become 
oractical. Alternative CAL systems and 
approaches to curriculum could be 
compared within the same environment. 

Immediate action to give educational 
jses for computers an identity different 
from data processing would in some 
organizations facilitate obtaining 
equipment necessary for meeting 
institutional goals at lesser costs. 
Instances include public education as 
A/ell as military training, and state and 
local support as well as federal. 
Immediate action to recognize 
computing and information processing as 
a significant part of basic education 
tfould set in motion the process of 
curricular revision necessary to the 
information age. In a few years all 
students in public schools would become 
familiar with computers, programming as 
tfell as applications, by about the 
eighth year of school. The college 
teacher could then assume long 



familiarity witn computers for entering 
students. 

Curriculum development requires 
special attention, since computer use in 
education is a new industry, as yet 
untested and lackinn incentives for 
developers and distrioutors. Commercial 
publishers can not be expected to 
initiate nign risk ventures, and yet 
they may be left behind if the computer 
vendors try to provide curriculum 
materials. Universities 3nd colleges 
have much to contribute since most 
textoooks originate there today. 
Individual authors need to see rewards, 
ooth academic and economic, for their 
efforts. 

The social implications of dramatic 
changes in availability of information 
and automatic processing require 
attention, hvery elaborate clipboard or 
binder will nave a small pocket for a 
specialized calculator, fiver/ reference 
book or procedures guide will have 
imbedded within its cover an infor nation 
processor suited to trie subject. each 
desk encyclopedia will include sounds 
and animations and a microprocessor 
which conducts searches of the entire 
text as well as selects from the 
contents, index and cross references. 
Planners need to consider the 
implications of new modes of 
representation and communication with 
macnines, new skills for learning, 
problem solving and creative activities, 
new roles for teachers and managers, ne'< 
situations for learning at home, on the 
joo, and in the community. 
Administrators need to plan systems so 
that increased dependency on informatior 
machines, for assessment of ideas as 
well as retrieval of information, will 
not become an inappropriate crutch. 

Communication between people and 
machines needs careful attention. As 
long as the students (or other casual 
users) need to type on a keyboard and 
watch for text and numbers and simple 
diagrams to appear on a special screen, 
these machines will have a rather narrow 
application in training and education. 
However, when a user can talk to the 
machine and get a response not just in 
printed text but in spoken words and 
other sounds, and can see the effects of 
his or her directives in the actions of 
equipment such as models and tools, ther 
the computer will fit in to a much 
larger world of learninc 



< WEST COAST COMPUTER FAIRE 



189 



BOX 1579. PALO ALTO CA 94302 



Additional areas for possible action 
at least as important as tne eight 
listed above can be added, nor example, 
through computers special onportuni ties 
become available for the ufted student. 
Dramatic improvements in communication 
and learning are achieved for the 
handicapped: Kurzweil's reading machine 
and ielsensory's talkinr calculator and 
Braile output device for the blind, and 
similar specialized equipment for the 
deaf. 

Other aspects of the technology 
provide facility for producing speech, 
processing knowledge, and building 
personal skills for learninq and 
performance . 



rUTUHt 

/■tew modes of representation and 
communication 

Future aevelopnients will extend the 
modes of communication possible between 
the learner and the machines. Speech 
and other sounds will become suitable 
for entry into the machine as well as 
for output from it. Gesture and other 
motions will be interpreted usefully. 
These developments will bring immediate 
benefits for' those lacking some standard 
sense or accepted communication means. 

for. e_xample , computer-ass is ted 

communication will revolutionize Braile 
for the sightless, and provide random 
access to audio and other personal 
notes. Already an application of 
microcomputers provides speech to those 
who have lost it through accident or 
cereoral palsey. Physiological measures 
will be encorporated as input, opening 
up new channels for persons lacking the 
motor control necessary to operate 
typewriters or to speak. 

Information will be represented with 
improved graphic and auoio means using 
networks and other data structures. The 
exploration of knowledge will be more 
directly available through manipulation 
of structure, organization, and dynamic 
interactions by the learner. The 
student will, with assistance of 
information processing routines, work 
effectively within a personalized and 
dynamic information base. This 
development will depend on considerable 
literacy in infomation handing using 
computers. 



iJew skills of learning, problem solving 
and creative production 

Computer assistance will help 
learners arrange multiple views of text 
and graphics. "Skills of speed reading 
will be extended by aids for i 'mediate 
comparisons and cross references among 
sections of text. Facilic/ with 
graphics will extend far beyond the 
multi-media shows of tocay. Authors of 
textbooks and reference materials face 
new challenges in apply in? the 
technology and anticipating improved 
skills of users. 

Problem solving skills will expand 
in more directions than can be 
anticipated. Induction may be 
facilitated oy interactive, 
computer-assisted deduction. Proof of 
the four-color map problen by students 
with computer assistance is only a 
beginning. More creative solutions to 
engineering problems will be especially 
effective. 

Artistic creations will similiarly 
be extended beyond our present abilities 
to comprehend ana appreciate, r'or a 
primitive example, consider today's 
dynamic sculpture for which a 
sound-light score interacts with tne 
movements and speech of its observers. 
Young artists will find many new 
opportunities, and the world of creative 
art will be opened to those previously 
excluded by physical handicaps. 

Previously untapped capacities for _ 
learning and performance w'i 11 be put to" 
use. A computer-based lab in whic.i 
learners explore their own abilities may 
help in areas such as inter-hemispheric 
communication ("using both sides of the 
brain") and enhanced mechanisms of 
recall and pattern recognition. 
Unanticipated and dramatic benefits may 
follow from the development of synergism 
of the human user and various machine 
information systems. Some of the most 
significant benefits may be obtained 
with the enhancement of communication 
within communities of all sizes. 

The United States does not have the 
only innovative projects working in 
these areas, as is apparent when 
reading other articles reporting on 
developments elsewhere in the world, 
extending communication, processing 
knowledge and building personal and 
interpersonal skills are important areas 
for future development anywhere in the 
world of personal computing and learning 
today . 



WEST COAST COMPUTER FAIRE 



190 



BOX 1579, PALO ALTO CA 94302 



SUGGESTED HEADINGS ON COMPiJlcrtS IN 
EDUCATION 



Anastasio, Ernest J. ana Morgan, Judith 
S. (1972) Factors Inhibitino' tne Use of 
Computers in Instruction. Educom, 
Princeton, N.J., USA. 

i31urn, Honala (Ed). (19/1) Comoutprs in 
Undergraduate Science Education. 
Conference Proceedings, Commission on 
College Physics, College Park, Mar/land, 

Bork, Alfred M., Luehrmann, Arthur u . 
and Schneider, Edward. (in press) 
Report of a Conference on Intelligent 
Videodiscs. University of California, 
Irvine, USA. 

iirignam, Christopher !?., .<amp, Martin 
and Cross, Kenneth J. (1975) Index of 
CAI ..iedical Education, Lister Hill 
Center, National Library of Medicine 
Bethesda, Maryland, USA'. 

Carnegie Commission on Fisher 
Education. (1972) The Fourth devolution* 
Instructional iechnology in Higher 
Education. McGraw-Hill', New York, USA. 

Commission on Instructional Technology. 
(19/0) To Improve Learning* An Eva uat ion 
of Instructional Technology, r. h. 
Bowker Co., New York, USA.. 

CONDUIT. (19/3) Documentation 
Guidelines. CONDUIT, P.O. Box 388, 
Iowa City, Iowa, USA. 

CONDUIT. (19//) Pipeline. CONDUIT, 
P.O. Box 388, Iowa City, Iowa, USA. 



CCUC (19 7/) Proceedings of the 19 7/ 
Conference on Computers in the 
Undergraduate Curricula. Michigan State 
Unmversity. CCUC, 1243 Linquist 
Center, Iowa City, Iowa, USA. 

Hamblen, John. (1972) Inventory of 
Computers in U.S. Higher Education, 
1969-70, U.S. Government ""PrTnEinq 
Office, Washington, D.C., USA. 



Harrison, Shelly A. and La.vrencp I 
atolurow (Eds). (1974) Educational 
iecnnologies* Productivity in Higher 
education. State University of N^v 
fork, Stony .irook. New York, USA. 

Hunter, Beverly, Kastner, Carol 3., 
Kubin, Martin L., and Seidel, Robert J. 
M97o) Learning Alternatives in U.S. 
education* wnere Stuaent and Computer 
:.ieet, educational Technology 
Publications, Eng lewcod Cliffs ,>■* 
Jersey, USA. 

Kamp Martin and brigham, Christopher 
(bds.) (ly/3) special issue of 
Computers in Biology and 4edicine. 

Kay, Allen, and Adele Golaberg. (19//) 
Personal Dynamic Media. Computer. 10 
3, 31-41. 

Levien, rfoger E. (19/2) ine Snernina 
iechnology* Instructional Uses of'th* 
Computer in Higher Education, A Carnegi- 
commission on Higher Education and >ianV 
Corporation Stud/, McGraw-Hill Book- 
Company, New York, NY, USA. 

Lippey, G. (Ed) 6 i974) 
Computer-assisted Test Construction, 
educational iechnology Publications, 
englewooo Cliffs, NJ, USA. 

Luehrmann, Arthur W. (19/2) Should the 
Computer Teach the Student or Vice 
Versa." Proceedings of the Sprino Joint 
computer Conference. AMPS Press, 
Montvale, New Jersey, USA. 



Mam, uana 3. (19/6) Experiment 
ovulation (cXPEfi SIM)* The Development 
of a Future-Oriented Pedagogy, in D. 
Bailey (to) , Computer Science in tie 
Behavioral and Social Sciences. 
University of Colorado, Boulder, 
Colorado, USA. 



WEST COAST COMPUTER FAIRE 



191 



BOX 1579. PALO ALTO CA 94302 



.iorton, A. Kent and Luahrnann, Arthur 
d. Jr , (W/'j) Project CO.fPUTe: A 
Mechanism for Producing and Distributing 
Instructional Material. ^3--W7 in 
Computers in education, 0. Lecarme and 
R. Lewis, hds. mrth-Ho Hand, 
\ms terdam. 

/,osmann, Charles. (lV/o) e'valuating 
Instructional Computing: -'.ensuring Needs 
and Resources for Computing in Miqner 
education. The University of 
California, Irvine, USA. 

iJational Academy of Sciences. U9o6) 
Digital computer Needs in Universities 
and Colleges, A Report of the Committee 
on Uses of Computers. National Research 
Council, i'.asninqton, D.C., USA. 

Nelson, Ted. ihe Home Computer 
devolution. Published by the author. ^ 
distributed oy The distributors, 702 5. 
Michigan, South Send, lh 466 IB. 

devison, John ./,. (1976) Computing in 
the Liberal Arts College. Science. 
194, 39o-402, October. 

Nievergelt, Jurg. (W/d) Interactive 
Systems for education: 'ihe New Look of 
CAI . Proceedings of tne Ir'IP 2nd .'lor Id 

Conference ..on. .Computer. Ldu cation, _. 

Amsterdam* dorth-Ho] land. 



PSAC. (Wo/) Computers in Hiqher 
education. President's Science Advisory 
Committee, U.S. Covernrrent Printing 
Office, .Jasninqton, U.C., USA. 

Seidel, Robert (e'd). (1975) 
Proceedings of the Ten-Year Forecast for 
Com outers" and Communications. Human 
Resources Research Organisation, 
Alexandria, Virginia, USA. 

Seidel, Robert J. and Hunter, oeverly 
C. (co-inventigators) (1977) Academic 
Comouting directory: A Search for 
exemplary Institutions Usinc Computers 
for Learning and Teaching. (First 
edition) Human Resources Research 
Organization, Alexandria, Virginia, USA. 



Suooes, Patrick. (I97S) I.npact of 
Comouters on Curriculum in the Schools 
and' Universities, in 0. Lecarme and H. 
Lewis (ws.), Ii-IP Second dorld 
Conference on Computers in education, 
Part 1. lOrth-Kollarvi Publishing 
Company, 1 1 3- I /'9. 

Suooes, Patrick. Smith, Rooert and 
! J ear J, Marian. (1977) University- level 
Comouter-assisted Instruction at 
Stanford: 1975. Instructional Science, 
6 , I 5 1 - 1 cj5 . 

■/an Jam, Andries. (W/o) Computers in 
Teaa-iing: An Application of Hypertext. 
Final Report to .national endowment for 
tne Humanities, drown University, 
Providence, Rhode Island, USA. 

.Shite, dames. (19//) /our Home 

Computer, dY/'.AX, 

Menlo Park, California, USA. 

Zinn, i'.arl L. (W/U) An evaluative 
Review of Uses of Computers in 
Instruction (Project CLUe» Computer 
Learning under evaluation). Final 
Report U.S.O.e. contract no. 
OeC-o-9-32-509-0032, University of 
Michigan, Ann Arbor, Uchiian, USA. 

Zinn, Karl L. (1977a) Free and 
Inexpensive Materials oh Computing in 
reaching and Learning Activities: An 
Informal Appraisal. Center for Researc) 
on Learning and Tea chine, University of 
Uchican, Ann Abor, Michigan, USA. 

Zinn, Karl L. (1977b) Computer 
Facilitation of Communication within 
Professional Communities. Behavioral 
Research .-.iethods and Instrumentation, 9, 
2, 95-10/. 

Zinn, Karl L. Computer Assisted 
Learning in the United States. In a 
special issue of the British Journal on 
Programming and educational Technology, 
in press for spring /d. 



WEST COAST COMPUTER FA1RE 



192 



BOX 1579, PALO ALTO CA 94302 



GETTING IT RIGHT: NEW ROLES FOR COMPUTERS IN EDUCATION 

Thomas A. Dwyer 

University of Pittsburgh 

Pittsburgh, PA 15260 



Introducti on 




Is there a better way? If so, 
what is it, why will it be better, 
and is there assurance that this 
time we can "get it right"? This 
paper argues that the answers are 
to be found in personal computers, 
and that the right way to use them 
is staring us in the face. To see 
why, let's examine a remarkable 
learning experience many readers 
have had. 

The Secret Unveiled 

Imagine you have just arrived 
at an airport in a strange city, 
and now need to reach your final 
destination by way of unfamiliar 
roads. One possibility is to take 
a taxi. This option is direct and 
efficient, and it can have the 
bonus of being a personalized tour 
along a tried and proven route. It 
has all the potential for being a 
first-rate educational experience. 
Yet, it is not likely that upon 
arrival you could pass a test asking 
for an accurate description of the 
route just taken. Your "individu- 
alized" treatment will have gotten 



you to your destination, but you'll 
still be a stranger to the territory. 
The ingredients for a true adventure 
were missing. 

Consider now another option. 
Suppose that you rent a car, and 
drive yourself. The simple act of 
moving into the driver's seat will 
have a profound effect upon the hun- 
dreds of interactions about to take 
place as you move into the role of 
problem-solver, becoming an adven- 
turesome and necessarily creative 
learner. This option comes at a 
price, of course. There will be the 
need to find and negotiate for a car, 
ask directions, study a map, choose 
between alternatives. There are also 
likely to be mistakes -- "ineffi- 
ciencies" by some standards. Land- 
marks missed, or instructions mis- 
understood will mean backtracking 
and revised planning. Questions will 
have to be asked, time will be lost. 
And the cost of having exclusive use 
of a car will be higher. But in the 
end, the person who goes "solo" will 
have learned things aboutgetting 
from A to B that are accessible in no 
other way. 

The paradox we see from this ill- 
ustration is this: the guidance of 
others may very well inhibit the best 
kinds of human learning. The con- 
clusion it suggests is that people 
have far more instrinsic talent for 
the business of learning than they 
have for the business of describing 
it,' or bringing it about in others. 
Even the ability of a small child to 
learn to deal with the incredible 
complexities of a constantly changing 
world makes our ability to explain 
how it all works seem pale by com- 
parison. 

Even less impressive is our 
success in promoting human learning 



WEST COAST COMPUTER FAIRE 



193 



BOX 1579. PALO ALTO CA 94302 



through institutions organized 
expressly for that purpose. 
Placing students within the walls 
of carefully designed schools 
would certainly appear to be the 
best way of assuring that they 
get transported along paths 
(called curricula) that visit 
many important educational points. 
The predicament faced is that for 
most students these are only 
visits, and dimly remembered ones 
at that. They never get to really 
know the territory. 

Enter the Computer 

What has all this to do with 
computers? The answer is both 
simple and perplexing. In 
reviewing the history o'f computers 
in education one finds that the 
majority of effort (and money) 
has gone to promoting their use 
as expensive educational "taxi- 
cabs." This effort has gone 
under the name of Computer 
Assisted Instruction, or simply 
CAI. 



I 
are v 
with 
be an 
of le 
progr 
Stude 
r o le 
There 
that 
c i a r i 
trans 
of ed 
real i 
times 
repet 
g i n a t 
ti ce. 
Antho 
Run , 



c 1 u s i 
i ntro 
into 
prof o 
was n 



n CAI , d 
iewed as 
the "dri 

imperso 
sson des 
ammers , 
nts are 
of i-n-d-iv- 

is, of 
they wil 
es of pe 
portati o 
u c a t i o n a 
ty, the 

more 1 i 
i ti ous v 
i ve 1 and 
The al 
ny Oetti 
Computer 



ri ver 

separ 
ver" t 
nal co 
igners 
and ha 
rel ega 
■i-d-u-a 1 
course 
1 be t 
rsonal 
n to t 
1 worl 
promi s 
ke a s 
i s i t s 
s of d 
arm ra 
nger ' s 
Run , 



on that 
duce tec 
e d u c a t i o 
undly ig 
o t w i t h o 



"every 
hnolog 
n has 
norant 
ut bas 



and passe 
able e n t i 
urning ou 
nglomerat 
, compute 
rdware ve 
ted to th 
pass-ervger 

the prom 
he benefi 
, customi 
he most e 
ds. In 
ed tour i 
huttle, w 
to the un 
rill and 
ised in 

1969 boo 
with its 

effort t 
i c a 1 chan 
reveal ed 

we still 
i s . 



nger 

ties, 

t to 

e 

r 

ndors 

e 

s. 

ise 

zed 
xoti c 

s at 
ith 
ima- 
prac- 

k 

con- 

o 

ge 

how 

are , 



Enter the Personal Computer 

But there is also good news 
and it's getting better all the 
time. It comes partly in the 



form of a new approach to technology 
and partly as a growing body of 
examples of student accomplishment 
that indicate an exceptional idea 
is at hand. It's a flowering of the 
"dri ve-yoursel f " option (called 
"solo-mode computing") in schools, 
made possible by personal computers. 



The new spirit is all the more 


remarkable in that it pretty well made 


it on its own. The funneling of 


large funds into CAI made early solo- 


mode computing an uphill battle for 


all but the most determined and adven- 


turesome. It is to the credit of the 


ingenuity of exceptional teachers and 


their students, that the door to solo- 


mode computing was gradually inched 


open. What first came through the 


crevice was at times amateurish, at 


times quite professional. But it was 


always inspirational and exciting, 


and it caught on. 


And now a new force from a com- 


pletely unexpected quarter promises 


to swing the door wide open. It's in 


the form of a personal computing move- 


ment that looks upon computing as a 


personally desired and appreciated 


enterprise. It's a use of technology 


that is (to use the words coined by 


Ivan Illich in his book De-Schoolinq 


Society) "convivial" rather than 


"manipulative" vis-a-vis the aspir- 


ations of people. It's the "drive- 


yourself" option for Gomputirvg -tome------ 


true. 



The personal computing movement 
is important because it can bring a 
new and different use of technology 
into our schools without major expen- 
ditures. If it finds a mixed welcome 
at first, there need not be concern. 
This is because it is a use of tech- 
nology that can literally exist in a 
home, a storefront, a community center, 
the corner of a library or museum. 



Actually ther 
sonal computing vn 
i n school s , becaus 
hands of the peopl 
pay for them, and 
It will thus be th 
of technology to e 
not sell itself as 
tionary." It guar 
Yet it assures eve 
in the right hands 
know the value of 



e is hope that per- 
JJ_ f i nd a wel come 
e it is in the 
e who use schools, 
care about them. 
e first application 
ducation that need 

"new and revolu- 
antees nothing, 
rything, because it's 
, free spirits who 
learning on one's own 



WEST COAST COMPUTER FAIRE 



194 



BOX 1579, PALO ALTO CA 94302 



THE ROLE OF THE MICROCOMPUTER IN A PUBLIC SCHOOL DISTRICT 

Peter S. Grimes 

Curriculum Supervisor 

San Jose Unified School District 

1605 Park Avenue 

San Jose, CA 95126 

(408) 998-6124 



The purpose of this paper is to apprise 
the reader of how San Jose Unified School Dis- 
trict is utilizing personal and home type mi- 
crocomputer systems in its instructional pro- 
gram. San Jose Unified is considered to be 
somewhat of a bellweather in the educational 
use of microcomputers because it established 
a district policy for the rapid introduction 
of microcomputers into its secondary schools 
over two years ago when few educators knew 
the possibility even existed. The paper ad- 
dresses the following topics : 

• A general description of S.J.U.S.D.'s 

instructional use of microcomputers . 
•A brief rationale for the development 
of S.J.U.S.D.'s microcomputer policy. 

• An explanation of why we promoted in- 

structional microcomputing before 
identifying a curriculum. 

•A more detailed look at how we are us- 
ing microcomputers . 

•A brief exposition of some of the things 
we have learned. 



San Jose Unified School District is a 
large (38,000 ADA) urban school district 
nestled in the center of the great Santa 
Clara Valley at the southern end of San Fran- 
cisco Bay. We have seven high schools, seven 
junior high schools, thirty-seven elementary 
schools, and a regional vocational center. 

Our educational computing facilities in- 
clude ten time-share terminals (PDP 8/E), fif- 
teen microcomputers (one SOL, three POLY 88, 
one CROMEMCO Z2-D, eight IMSAI 8080 and one 
PET), and a Hewlett Packard 2000 system at 
our vocational center. (Since the program at 
the vocational center is dedicated almost ex- 
clusively to vocational data processing, the 
following remarks refer to our microcomputers and 
PDP 8/E time-share mini.) These terminals are 
generally distributed as follows: one or two 
terminals in each junior high, two or three 
terminals in each senior high and one roving 
terminal for our elementary extended learning 
program. 



Our use of these terminals is presently 
organized around the following themes . For 
junior high school, the emphasis is computer 
literacy for a large number of students, with 
some schools offering BASIC programming as an 
elective. The senior high school objective 
is computer programming using a variety of 
machines: programmable pocket calculators, 
desk top printing calculators (with optical 
card readers) and general purpose microcom- 
puters. Our language of choice is BASIC with 
the probable addition of disk FORTRAN in the 
near future. We also anticipate the develop- 
ment of an introductory computer science elec- 
tive as the need develops. 

We are told that San Jose Unified is some- 
what unique in its district wide policy to en- 
courage instructional computing through the 
purchase of small microcomputer systems. The 
dramatic thrust of this policy is evidenced by 
our purchase of fifteen such units in the past 
two years and a probable similar expansion over 
the next several years. As a school district, 
we are quite serious about promoting general 
purpose computing through small microprocessor 
based systems. 

I believe it is important to reflect upon 
the origin of this policy. Well over two years 
ago, it became quite apparent to us (residing 
as we do in the heartland of the digital elec- 
tronics industry) that small general purpose 
computing systems would become relatively in- 
expensive and thus well within the budget cap- 
abilities of individual schools and school sys- 
tems. (This judgement has been thoroughly vin- 
dicated with the marketing of the $595 PET in 
late 1977.) This belief led us inexorably to 
certain conclusions: 

1) Inexpensive computing would rapidly 
lead to a demand for the inclusion of 
computer programming and computer 
science into the public school curri- 
culum. 

2) The ordinary citizen would very soon 
have to have some knowledge and skill 
in the use of many types of computing 
devices; i.e., pocket calculators, 



the 



WEST COAST COMPUTER FAIRE 



195 



BOX 1579. PALO ALTO CA 94302 



programmable calculators and compu- 
ters. 

3) Small general purpose computers would 
rapidly become important as instruc- 
tional devices (learning games, simu- 
lations, tutorials, drill and prac- 
tice) . 

4) Profound changes in the mathematics 
curriculum would become inevitable; 
i.e., increased stress on decimal no- 
tation, flow charting, algorithmic 
programming, iterative and recursive 
techniques, computer evaluation of 
functions, the demise of the slide rule, 
and vastly increased use of mathema- 
tical processes heretofore requiring 
calculations far too complex and time 
consuming for common use. 

In our mind, the digital electronics re- 
volution had a certain inevitableness about it. 
These things would happen! They would happen 
quickly! The sooner we became involved, the 
more control we would have over the situation! 
We installed our first microcomputer (an IMSAI 
8080) in March of 1976. 

San Jose Unified has become somewhat of a 
bellweather for schools and districts contem- 
plating their first entry into educational mi- 
crocomputing. We have received many inquiries 
about what we are doing with our microcomputers. 
These inquiries have a common element. What is 
your curriculum? What was your planning? What 
do students do with the machines? There seems 
to be a feeling that to justify the investment, 
the use of the machines must be totally maxi- 
mized within the shortest period of time. It 
is our opinion that this seeming urge to docu- 
ment the need for computer resources and spec- 
ify a curriculum is premature at this early 
stage. That is why we do not as yet have an 
identified curriculum. Our belief in the in- 
evitability of educational computing does not 
imply that we have gazed into the crystal ball 
and have thereby seen the future. We really 
don't know exactly how these microcomputers 
will ultimately be used in our schools. Nor 
does anyone else! All we know is that we must 
teach more about computers to more and more 
students and that we need computers to dis- 
cover how to do this . We think that teaching 
BASIC programming is a relatively safe thing to 
do at the present time. 

Why do we say that detailed early planning 
is premature? Because very few of us in sec- 
ondary public education have any real exper- 
ience with computing, even mathematics teachers. 
We have gone back to school ourselves! We are 
learning BASIC and FORTRAN, assembly program- 
ming, and something about computer science in 
general. We are finding out more specifically 
how our mathematics courses will probably be 



impacted by the advent of inexpensive cal- 
culators and computers. We are also finding 
out what the present student demand is for 
computer elect ives so that we will have a 
basis for projecting the future. We are try- 
ing to be creative. We are fearful of making 
detailed plans before we are knowledgeable 
enough to do so. We feel very strongly that 
teachers should develop the curriculum and 
that they would not be motivated to do so 
without the actual physical presence of a 
computer. (Teachers, too, can be very prag- 
matic. It doesn't make very much sense to 
make a large investment of after work time 
and effort unless the resulting skills and 
knowledge can be put to use . ) What we have 
done, then, in San Jose Unified is to provide 
the computer resources so that teachers could 
make the necessary discoveries and obtain the 
necessary background to begin identifying and 
meeting the needs created by the computer 
revolution. This development takes time. 
That is why we became involved so early. And 
so... what are we doing and what have we 
learned? 

We have introduced programming courses 
in high school. These vary from one to three 
semesters. A typical sequence would be, a) 
introduction to computing using programmable 
hand held calculators and printing desk top 
units, b) BASIC programming with microcom- 
puters, and c) advanced BASIC programming. 
In junior high school we have taken three 
approaches. First, a few schools are offer- 
ing a one semester BASIC programming elective 
for grades 7-8-9. Second, after school com- 
puter clubs have been organized in which 
BASIC and system programming is taught in a 
more recreational context. Third, we are 
developing a plan for computer literacy where 
most students prepare a program, enter it into 
the computer and successfully run it. At the 
elementary level we are testing the waters 
with one roving microcomputer serving our 
grade 4-5-6 extended learning program (MSM) 
students. So far these students have been 
exposed to a variety of learning games, sim- 
ulations and drill and practice routines. We 
have also taught the more motivated elementary 
student some rudiments of BASIC. 

We have also learned a good deal. There 
is definitely a need for computer instruction. 
Five of our high schools are offering one or 
more semesters of BASIC programming. One 
high school has employed a computer science 
teacher and anticipates that he will be teach- 
ing full time in this area within the year. 
Although we have found no suitable texts, a 
large amount of reference material exists 
which has made it fairly simple for teachers 
to assemble a body of graded programming 



WEST COAST COMPUTER FAIRE 



196 



BOX 1579. PALO ALTO CA 94302 



experiences (mostly in mathematics). Up to 
300 high school students are currently involved, 
a number likely to grow as our computer re- 
sources expand and as computer programming be- 
comes more and more recommended or required for 
college matriculation. 

Our experience in junior high has been 
quite similar. Although there is not as great 
a demand for programming as an elective, the 
computer clubs have been extremely popular and 
wide scale computer literacy is being developed 
as a goal for our grade 7-8-9 mathematics pro- 
gram. Our student contact here is much more 
difficult to measure because junior high com- 
puter instruction tends to be much more infre- 
quent and diffuse. Still, we would estimate 
that the district impact here exceeds five hun- 
dred students and is rapidly growing. 

The results of the elementary program are 
difficult to assess. Only a few students have 
profited from their exposure to BASIC. This 
is understandable, however, considering the 
lack of computer training or knowledge posses- 
sed by most elementary teachers. It would ap- 
pear that the computer's future in the elemen- 
tary grades is as a learning device in the areas 
of gaming, simulation, drill and practice and 
tutorial instruction. The elementary program 
has been more successful where older students 
have been available to serve as cross age tu- 
tors. 

With regard to hardware, we have found 
our microcomputers to be thoroughly dependable. 
Time between failure seems to be in excess of 
one year. Most of our machines are running on 
16K of RAM with 8 or 10K BASIC interpreters. 
Our system storage medium is audio cassette 
tape. This has proven to be quite satisfac- 
tory. Students store their programs on paper 
tape or in cassette cartridges. We are ex- 
perimenting with teletype vs. television mon- 
itor I/O and have reached no conclusions. We 
are finding our Cromemco Z2-D machine to be 
the most versatile, by far, of all our micro- 
computers. Students have their own mini-disk 
for program storage. Cromemco software (BASIC, 
FORTRAN, Z-80 ASSEMBLER, DOS) is superior to 

anything we have seen. Also the Cromemco 

machine can expand to eight BASIC users at a 
very modest cost for each additional user. 
Given the exceedingly low failure rate after 
installation, we expect to pursue this Cro- 
memco timesharing approach in our high schools . 
(The argument against timesharing is that 
when the machine dies, so do all the termi- 
nals.) We have also had a good experience 
with our one and only PET. It performs as ad- 
vertised and seems to be just as reliable as 
our other machines. Because of its attrac- 
tive cost ($595 for 4K user RAM and $795 for 
8K) we expect that we will purchase many more 
PETs over the next year or two. Since they 
are less versatile machines, they will prob- 
ably find their greatest use in junior high 
where computer literacy is the primary goal. 



There have been some problems, of course. 
We have found that a system should be thor- 
oughly burned in and tested before installa- 
tion. With microcomputers, the first few 
weeks of life are the hardest. We are also 
very much aware of the lack of good software 
interchange • BnSxu uas yet to uc standaruizeu 
and, just as important, there is no standard 
medium of exchange. 

In conclusion, we would like to emphasize 
that what we are doing is very "plain Jane". 
We are not engaged in anything at all exotic. 
We are mostly teaching BASIC. The context 
of our programming is largely mathematics 
because mathematics teachers have preempted 
the field. We like BASIC because it is inter- 
active and because it is so well suited to 
the range of abilities with which we have to 
deal. We know about CAI, but are not em- 
phasizing its use at this time because of the 
almost total absence of microcomputer adapt- 
able software and the high cost of preparing 
our own CAI software. More importantly, we 
are following the approach I have outlined 
above so that we can quickly adapt to the 
new demands being placed on the mathematics 
curriculum. Perhaps of most importance is 
our intense feeling that programming and 
computer science is a new curriculum area, 
related to, but somewhat separate from 
mathematics, science and electronics. The 
digital electronics has birthed a new sec- 
ondary school subject and we want to be part 
of its upbringing. 



WEST COAST COMPUTER FAIRE 



197 



BOX 1579. PALO ALTO CA 94302 



MICRO COMPUTERS IN A HIGH SCHOOL - EXPANDING OUR AUDIENCE 

William J. Wagner 
Mountain View High School 
Mountain View, California 



Intr oductio n 

The title of this talk is meant to be 
ambiguous, for I will argue that two 
audiences are being expanded: the introduction 
of micro computers into the high school will 
allow computer education to be offered to more 
students, and further, educators like me 
represent a very different -set of users of the 
formerly hobbyist-oriented micro computer. So 
if you think my feet are shaking up here, it 
is merely because I am playing the role of the 
tip of the iceberg. 

Computer programs in schools are not 
new. What is new is that micro computers open 
the possibility of bringing computer education 
to many more students within the strictures of 
modern school budgets. 

This broadened market represents a 
real challenge for computer educators. In 
every school there exist some students (about 
1%, I think) who will, if you let then, spend 
all their waking hours at the terminal, making 
the machine jump through hoops, and 
occasionally emitting those familiar gales of 
laughter. They "are great people (they aire us, 
right?). Every teacher needs these kids 
around - they keep the adrenalin circulating. 
We are proud of their programs and like to 
take credit for their progress. Indeed, we 
should take some credit, but not for teaching 
them much. Our contributions are in 
suggesting interesting new kinds of problems 
and in getting the equipment in their hands 
in the first place. 

Important as it is to give these 
future professionals and/or hackers their 
first boost, our programs should not be judged 
or justified according to the progress of 
these superstars. Schools are full of lots of 
different people, and it is this other 99% 
which I intend to discuss here, and to which 
the program at Mountain View High School is 
directed. Also, although I am by no means a 
computer hobbyist and have only limited 
knowledge of the micro computer field, I will 



Home Address: 127 O'Connor St. 
CA 94025 



Menlo Park, 



present my views on the special requirements 
of high school computer facilities, and why 
we selected micros. 

Throughout this talk I will also ask 
for your help. Computer educators need better 
ways to find each other and share their ideas, 
plans, successes, and even failures, I hope 
this will be the beginning of a useful 
exchange among us . 

The Students 

Without risking more guesses about 
percent composition, here are five categories 
of students, for the purpose of discussion: 

A . The computer hotshots. These have been 
discussed above, but I should add that they 
are not necessarily the best students in other 
classes, and may even have trouble getting 
computer assignments in on time. We can 
really help them by focusing their energy and 
enthusiasm toward activities which will 
continue their growth. 

B .. The, goad., s Ludents_.-in__ma.th_. a nd science.., __. . 

These are our natural audience, but sometimes 
it seems surprising that they do not flock to 
the computer. For one thing, they are very 
busy with course work, and school courses are 
not often set up to reveal how the computer 
might be of use. And the tightly packed 
college prep schedule has little room for 
electives. 

C. Other good students. This may be the 
largest group in any school. They also are 
busy with various school activities, but 
unlike group B, computers are not on their 
list of things to pursue some day. Further, 
they often show a remarkable disinterest in 
what we like best - computer games and 
programs which crunch numbers. 

D. Kids with lots of interests, but not 
particularly top students. Some of these 
might be interested in our hardware, but not 
so much in how to manipulate it. Others find 
programming to be their first interesting 



WEST COAST COMPUTER FAIRE 



198 



BOX 1579. PALO ALTO CA 94302 



"academic" class. Often their math level is 
so low, however, that the number of problems 
that can be suggested is limited. 
L. Unmotivated and unsucces sfu l students . 
This is another large group. They find their 
way into computer classes because their 
schedule is not full and because someone, 
usually not the student himself, thinks that 
something flashy and new may produce a change. 
It turns out to be true in some instances. 

I will mention in passing another 
group which has remained an enigma to me - 
young women. At my school they make up at 
least half of the enrollment in advanced math 
classes, but seem impossible to attract to 
the computer program. Those in the 
programming classes are every bit as good as 
the boys , but only one or two out of the 
twenty or so students who spend extra time 
programming or on games is female. I look 
forward to discussing this situation with 
persons interested in sex differences in math 
and science. 



The Importance o f Expanding Our Audience 

I think that we designers of computer 
curricula have tended to think in terms of 
groups A and B only. It is very difficult to 
find a programming book that does not assume 
knowledge and interest in higher math. Also, 
we have been content with the few students 
from those groups who flocked around us 
because we couldn't have served many more 
with our limited facilities anyway. 

It is important for us to reach out to 
this large majority of students who do not 
naturally find their way to the computer room. 
It is obvious that computers are actually a 
part of their lives whether or not they like 
or understand them. However, few 
opportunities will exist for them to interact 
actively with computers outside school. 

Furthermore, these students tend to be 
alienated from the computer activities at 
school - they think it is for smart people 
only, and they think that demented laughter 
and secret language means you have to be a 
little crazy too. (k colleague at a nearby 
school who brought her Algebra I class to the 
computer room for a week of introductory BASIC 
told me a wonderfully poignant story that fits 
here. As a 10th grade girl sat down at the 
terminal for the first time, she looked around 
nervously and inquired, "Can anyone see me in 
here?") 

How can we reach these individuals who 
do not automatically think of computers as 
their thing? It is a difficult teaching and 
strategic problem, but we must continue to 



look for ways, for several reasons. First, 
this could be their last chance in a 
relatively non-threatening environment to have 
hands on experience with a computer. Once they 
leave high school their education and 
experiences begin to narrow toward a 
vocational or academic or lifestyle choice 
which will preclude taking a flyer into an 
apparently unrelated field like programming. 
Their contacts with computers will be passive, 
inspiring awe, fear, or anger. 

Also, the opportunities that do exist 
out there are more restricting. The college 
computer classes I know about are not intended 
for the liberal arts person, but for the 
future professional or technician. Thus we 
must think of some of our teaching as part of 
a general education. And for those students 
too busy, nervous, or skeptical to commit 
themselves to a full course, we must find ways 
to bring computers into the classes they do 
select. 

Another reason to teach these students 
about computers is that we can offer valuable 
experience in problem solving and thinking, as 
well as a new vocational direction. This area 
matches so many of the goals expressed by 
various departments of my school and of the 
school itself, that I am sure that if the 
slate were wiped clean and a new public school 
designed, courses about programming and 
computers would merit permanent status in the 
school. 

In this Utopian school computer 
instruction of some kind would be a natural 
part of most students' coursework: either a 
regular course like Geometry, the first step 
onto the college bound math track, or the 
equivalent of an elective in English or Social 
Studies, or a vocational offering like 
Woodshop or Auto Mechanics. I have found that 
experience with computers and programming can 
help teach math more effectively, can help 
students problem solve and organize their 
thoughts, and can of course lead to jobs at 
various levels of academic preparation. 

Revolutionary school reform is not 
imminent, so it is the responsibility of us 
educators to work for the gradual increase in 
use of computers in schools so that these 
benefits can be made available to more 
students and apparent to more decision-makers. 

Finally, I think that almost anyone in 
high school who is willing can be taught 
programming in BASIC at some level, and we owe 
it to them to provide this opportunity to be 
in control of the computer for once. The 
problem is pedagogical rather than one of 
prerequisites. What we need is a set of 
activities for various levels of student 
ability and interests. 



WEST COAST COMPUTER FAIRE 



199 



BOX 1579, PALO ALTO CA 94302 



It would be glib for me to say that 
this is an easy task, but I am busy working on 
the problem, and believe it can be solved 
satisfactorily. 



The Cu rricular Offe rings 

At Mountain View High School we have 
tried to broaden the audience of our computer 
offerings by using five different approaches. 
They are a two week course in BASIC offered as 
a unit in certain math classes, simulations 
and games which have applications in various 
subjects offered in the school, easy access to 
the computer at designated times for game 
playing, classes in programming which offer 
experiences at three distinct levels of math 
ability and interest in programming, and a 
well attended adult education class in BASIC 
at night. 

First let's talk about what we do not 
do. There is no CAI per se because I have not 
figured out how to accomplish this in a class 
situation with our present facilities, and I 
await the software which can provide the 
organization, record-keeping, and pacing which 
are required in order for CAI to actually be 
a help to a teacher. Also, I await the teacher 
who wants to give it a try. Another thing we 
do not do is any kind of instruction about 
hardware or lower level languages. This 
is simply because I know almost nothing about 
these things. I am a teacher, a sometime 
programmer, and somewhat of a mathematician, 
but I have had a nervous awe of electronics 
ever since my younger brother became a ham 
operator in the sixth grade and began speaking 
in tongues. I hope that others will know some 
ways to approach these omissions, or will 
suggest other activities we could usefully 
pursue. 



The Two Week Course. This has been the 
backbone of our program. It has brought 
programming to a large number of students and 
it has been effective in building enrollment 
in our programming classes. Furthermore, it 
was a major factor in gaining permanent status 
for the computer program. 

This course is based upon two 
premises: (1) A remarkable amount of 
programming in BASIC can be taught in two 
weeks, and (2) if programming is introduced 
as a non-optional part of a course, then some 
of the barriers against participating are 
transcended (for example, none of the regulars 
are around to make people feel dumb, and most 
students tend to try harder when something is 
expected of them, compared to a situation in 
which the activity is optional). 

The two week course was first offered 



in 9 math classes during the Spring of 1977. 
The classes were Geometry, Algebra II, 
Trigonometry, and Calculus. Modified versions 
were given in three other lower level classes. 
I taught each course with the assistance of 
the regular teacher. I am confident that the 
sane proportion of students who pass these 
classes came to understand the essentials of 
the following statements: INPUT, LET, GOTO, 
PRINT, and IF.. THEN, how to work with strings, 
and how to use the system commands like GET, 
SCR, LIST, NAME, SAVE, and KILL. 

At the minimum each student wrote and 
ran 6 programs, some related to their 
coursework, one using strings to produce a 
conversation with the person at the terminal, 
and some of general interest like computing a 
batting average, or a grade point average. 
Let me emphasize that this was the minimum. 
In each class there also appeared advanced 
programs such as one similar to NUMBER, change 
calculators, prime generators, and, my 
favorite, a program which guesses the person's 
secret number. Each of the writers of these 
particular programs had never programmed 
before, and accomplished these results 
within two weeks. 

The facilities during this first go at 
the two week course were four teletypes 
time-shared to an HP 2000F at the Santa Clara 
County Office of Education. Everything was 
rented, because this was to be a pilot project 
to prove the value of the program and to help 
us better evaluate what facilities would be 
needed. I will discuss facilities later in 
more detail, but let me add here that four 
stations seemed sufficient, although one of 
the few complaints from the students involved"'"' 
the need for more terminal time. 

Games and S imulations . HANGMAN in 
French and Spanish (and also in Tagalog!), 
LUNAR in Physics, CIVIL and ELECT in History 
classes, story programs in Creative Writing, 
NEWTON (getting across the stream against the 
wind) in Trigonometry, demonstrating limits 
in Calculus. These are all activities which 
we have carried out with classes. We reach a 
lot of students this way, and a lot of 
teachers. There are more things we can do, 
and improvements we can make with these. We 
have not, for example, offered a coordinated 
unit using, say, the Huntington teaching 
materials. If others have, I would appreciate 
hearing from them. 

The problem of interacting with other 
teachers and their curricula is an extremely 
delicate one. We computer teachers must tred 
carefully - our programs and equipment must be 
easy to use (or we supply student assistants), 
and our offerings should be more than just 

iiEitr LiixeLS • j-ne eiaitc tidSo SitOUxu. uc awxt; 



WEST COAST COMPUTER FAIRE 



200 



BOX 1579, PALO ALTO CA 94302 



to get involved, and this may stretch our 
imaginations, given our limited facilities or 
space. 

Also, we must work to convince our 
colleagues that we can contribute to their 

1 net" l"UCt "• "1 Kooanco /l«->n'«- f f\r-rya.t~ t-^af fK fl ,r 

are probably not from either group A or B 
described above. I hope that other teachers 
trying the same things will get in touch with 
me, for this is an area of great importance to 
the increased success of our programs, and one 
in which sucessful strategies are very 
critical. 

Game Playing. The computer facilities 
are open various times during the week for 
game playing by any student in the school. The 
HP system library is full of games, many with 
no educational value. We do not encourage 
these games, but they do attract kids. We try 
to show them the more interesting (from a 
teacher's point of view!) alternatives to 
FOOTBALL, BLACKJACK, etc, and there are many 
on that system. 

When we have changed over completely 
to our own computers there will be more 
control over the available games, but I still 
think that game playing will continue to be 
an important part of our program. There is a 
lot of thinking and problem solving required 
by the right selection of games, and I think 
such things are a useful addition to a 
school's extra-curricular offerings. Game 
playing leads some kids to inquire about 
programming, gives others ideas for original 
programs, and at the minimum lets a kid 
interact with a computer in a non-passive way. 

Programming Cla sses. There are now 
three sections of a one semester course in 
which the primary activity is teaching BASIC. 
In the course description I made Algebra 
"recommended but not required", which is 
consistent with my desire to reach more 
students and with by belief that programming 
can be taught to a wider range of people than 
is usually thought possible. Students from 
each of the groups A through E described 
previously enrolled in the class, and it was 
immediately apparent that the course could not 
follow a traditional format of lectures and 
assignments. 

The course now operates on three 
different levels. Some students just work on 
programs which they and I agree would be 
productive, and ignore the regular schedule of 
assignments. This schedule involves 
completing four chapters of our text, but 
almost every book or program assignment is 
divided into two levels of difficulty 
(students choose for themselves which level to 
tackle on each assignment). 

I would be glad to discuss the course 



in more detail with anyone interested, but let 
me close by highly recommending our text - 
Computer Progamming in the Basic Language, by 
Neal Golden (Harcourt Brace Jovanovich) - it 
is cheap and full of good assignments at 
almost every level * It does, however, assume 
a minimum of Algebra I, which has caused me to 
generate a lot of supplementary problems. 

Adult Education. A night class in BASIC 
using our facilities is being offered each 
semester. Right now the format is 6 weekly 
meetings of three hours each. I consider this 
an important part of our program, with 
potential for exciting growth. If you think 
about a public school as a community resource, 
many uses come to mind for a public computer 
facility downtown. We are interested to 
talking to others about these possibilities. 



Getting the Program Funded 

Of primary importance in the initial 
stages of our effort to establish a computer 
curriculum at Mountain View High School was 
the involvement of several dedicated parents, 
including one Board member. These parents 
insisted that the school should have a program 
comparable to the other schools in the 
District, and did not let the matter rest 
until it was a reality. Almost an entire 
school year was required to produce a 
proposal, and after another six months final 
approval was obtained to begin. 

In the spring of 1977 we began with 
four rented teletypes and offered the two week 
course described above. Its success produced 
wide spread interest in the computer 
throughout the student body, and led to a 
decision by the Administration and Board to 
make the program permanent. Other computer 
programs that I am familiar with in schools 
gradually grew over the years - a teletype 
here, renting or scrounging time there, with 
the continual struggle for marginal improve- 
ment each year. At Mountain View High School 
we now have adequate permanent facilities in 
large part because of sustained parent support 
in the early stages, and because we were able 
to involve a lot of students in a short period 
of time during the early part of the project. 



Computer Facilities 

Since October, 1977 we have been using 
two time-shared teletypes and two purchased 
Processor Technology "Sol" micro computers 
with North Star disk operating system and 
software. Each of the. units has 24K of usable 
memory, which means that BASIC programs may 
reach about 10K in size. We use an Okidata 



WEST COAST COMPUTER FAIRE 



201 



BOX 1579. PALO ALTO CA 94302 



printer which may be accessed by each of the 
computers through a centrally located switch. 

We have been very pleased with the 
Sol-North Star combination, and with the 
delivery and support provided by the Byte Shop 
of Palo Alto, As I write we are selecting two 
more units, one of which will be a Horizon 
computer from North Star with a dual disk 
drive. 

The primary reason for choosing micros 
was cost, for the total purchase price of the 
four systems will be roughly equal to two 
years of rental of four time-shared teletypes, 
I was attracted to the DEC system which 
time-shares four ports, because of DEC's 
reputation and all the software which comes 
with it. But for their price we could 
purchase six of the Sol systems, and also 
DEC's maintenance costs over $2000 per year. 

Having become convinced that micro 
computers had ceased to be strictly a hobbyist 
domain, I made the plunge and have been 
delighted. Like the Holiday Inn commercial, 
the best surprise is no surprise, and for me 
the best system is one you don't have to think 
about. We load BASIC in the morning and can 
continue through the day with students 
programming, loading, printing, and saving 
programs. Often at lunch time, or as a reward 
for my General Math classes, however, the 
flashy Sol games are brought out. 

Computers in schools must be very easy 
to use. Students should be able to 
concentrate on the programming and ignore the 
machine itself. Teachers should not need 
special skills or knowledge if the use of 
computers is to spread to. more .schools. -and to 
more departments within the school. 

It is fine if one staff member can 
fathom the mysteries of machine language 
or hardware, but the overall program should 
not depend for its operation on this 
individual or his/her knowledge. Uncommitted 
teachers will not want to touch a system which 
seems inaccessible or arcane. 

In addition to satisfiying these 
unusual requirements for a computer whose 
tradition is with the hobbyist, our micros 
offer nice extras. For those students who 
wish to pursue assembly language, this is 
possible. The four systems are totally 
portable, and can each be dispatched to 
separate classrooms (or to different homes 
during vacations!). The FILL and EXAM 
commands (PEEK and POKE in some languages) 
bring a fascinating extra dimension to BASIC. 
And recently a student discovered how to 
allow data entry without the carriage 
return ... and so it goes. 



Our micros are symbolic of our entire 
program. Their cost, versatility, and ease of 
operation make it possible to bring computer 
education to many individuals who never would 
have had the experience, and yet they still 
can provide challenge and excitement for the 
brightest student. I am very pleased to have 
joined the ranks of the micro computer, and 
especially pleased to have been able to join 
on my own terms rather than yours. There are 
a lot of teachers and students like me out 
there, and I predict that next year this place 
will be too small to hold them all. 



WEST COAST COMPUTER FAIRE 



202 



BOX 1579. PALO ALTO CA 94302 



INTRODUCING THE COMPUTER TO THE SCHOOLROOM 
DON BLACK 
INTEGRATED COMPUTER SYSTEMS, INC. 

3304 Pico Boulevard 

Santa Monica, California 90405 

(213) 450-2060 

Formerly Director of Computer Activities 

THE LEARNING FARM 

2696 Valewood Ave 

Carlsbad, California 92008 



ffT tub itflRNlwr, f-flftM, 

We have been playing with our computer for 
year and a half now. All the students in our 
school use it in one form or another, as do 
the teachers. Less I mislead you, we have 
3-5 teachers and 20-40 students in a 'alterna- 
tive education' environment. Instruction is 
individualized, we try to maintain an 8 to 1 
student-teacher ratio. 

Needless to say, there was a great deal 
of resistance to the introduction of this new 
A/V technology to the school. I would get 
comments like "They scare me.", "I don't like 
computers.", and this was from the teachers I 
Distribution of a few biorhythm charts, compu- 
ter generated poetry, and Weizenbaum's ELIZA 
helped dispel any qualms about the system 
replacing teachers or taking over the school. 

Before I brought the computer into the 
school, I made arrangements with the teacher 
of a local community Junior College (Palomar 
College, San Marcos, California), Mr. Mike 
Michaelson to bring my students to the computer 
center a few hours a day for a computer program- 
ming class. Mr. Michaelson allowed access to 
the Univac 70/7 system and a classroom, much 
to the chagrin of the Computer Science Depart- 
ment. 

My plan was to introduce the students to 
some computer games and gradually sneak in some 
educational courseware. Unfortunately, the 
college had no computer games, and frowned upon 



their valuable computer being used for such 
frivolousness. So, back to the drawing board 
While I was busy drawing up my new plan of 
attack - designing and programming the 
PILOT Interpreter/Editor System - unbeknownst 
to me, my students were busily typing in the 
code from 101 Basic Computer Games , DEC and 
What To Do After You Hit Return , People's 
Computer Company. They were doing this in 
the afternoon on their way home from school. 
Needless to say, this did not endear me to 
the Computer Science Department. 

However, Community College policy is to 
serve the community. When our plight was 
brought to the attention of the administra- 
tors of the college via the parents of the 
students our fairy godmother appeared in the 
form of Dean Cootz, Dean of Science and 
Technology and Tom Dolan, Head of the Computei 
Center. These gentlemen, through the 
Mathematics Department, offered us unlimited 
computer time for the duration of the semestei 
in order that my students might meet their 
high school requirements. We were required 
to allow the Business Administration students 
priority on the system. 

Remember the plan? My daddy always said 
"planning is essential, but plans are no damn 
good". Much to my surprise I discovered I 
had five computer nuts, now programmers, and 
their friends - potential computer nuts. The 
friends were playing the games that the 



WEST COAST COMPUTER FAIRE 



203 



BOX 1579. PALO ALTO CA 94302 



programmers had implemented. The games that the 
audience had chosen were STARTREK (now a classic) , 
POKER, MUGWUMP, HURKLE, WUMPUS, PIZZA, BIOSIN, 
3DPL0T, MAZE, TIC TAC TOE and BEAT THE COMPUTER. 
This last game was of their own devising: take 
a game and reprogram it so that you have better 
odds, (there may be a lesson there). 

My daddy also told me "If you can't beat' em 
join 'em". It wasn't too far from our schools 
educational philosophy to let the students play 
games (after all, the teachers play some less 
constructive ones) , so I incorporated the games 
into my educational strategy. By this time PI/ES 
was completed so we started translating their 
selected games from BASIC into PILOT. The games 
that were not translatable, we used in some math 
context. The translation allowed the students to 
explore the fundamentals of computer languages, 
freeing them from a 'dialect' dependence. They 
learned personally how the implementation of a 
particular syntax forces a programming strategy. 

At this point, EDUTECH Project had agreed to 
provide to the San Diego County Department of 
Education one copy of the PILOT Interpretor/Editor 
System in return for the loan of a Teletype and 
access to their Burroughs 6700 system for a 
semester. 

We still have access to the system and are 
at the time of this writing, negotiating for an 
extension in exchange for courseware. My thanks 
to Dr. Jane Gawronski, Mr. Bob Doolittle, and 
Mr. Bill Cue, not forgetting the glib operator 
with the sagacious one-liners that appear on my 
terminal at 3:00 in the morning. 

The final educational strategy was: 



1) Introduction via playing games, 
taught some basic skills: 



This 



a) turning the system on & off, b) keyboard 
familiarity, c) loading and executing a 
program. 

2) Elements of Computer Programming. Using the 
PILOT language I introduce students to the 
concepts Input and Output. I give them the 
'T:', and 'A:' statements and have them 
write a simple program. 

3) The Black Box. Between Input and Output 
a Black Box that performs mysterious 
operations: 

a) Move a string from Input to Output 

b) Remember something typed in. 

4) Decisions. The computer may compare an 
answer with an expected answer, and make 



a decision based upon this comparison. 
'M:', 'Y:' and »N:' instructions. 
(Match, Type if Yes, Type if No). 

Some of our students lose interest follow- 
ing number 4, above. They have the option 
of leaving the course at this point with 
a functional degree of computer literacy. 

5) The students are now ready for more 
esoteric concepts such as 'J:' - Jump, 
'U:' - Use (call), 'E:' - End (return), 
'C:' - Compute. 

6) The students are now writing and debugging 
their own programs and translating from 
BASIC to PILOT. The translation teaches 
them some programming tricks that are used 
by more experienced programmers, and how 
language capabilities differ. 

7) New tasks are introduced that are not 
possible with PILOT (such as array 
manipulation, File I/O, Function refer- 
ences) that occur in BASIC games. The 
students then dig into BASIC in ernest. 
In the same way, FORTRAN is introduced. 
Attempts to debug BASIC programs intro- 
duces the virtue of Structured Program- 
ming and Documentation. Our students 
discover programming on their own, with«c 
little guidance from the staff. 

When the other teachers witnessed the 
success I was having with the computer, their 
interest was aroused. The programming students 
introduced the teachers to the games that they 
had. written, and even taught_.thera the rudiments 
of programming. The computer terminal has now 
become the focus of school activities in the 
area of academics. 

One teacher wrote an English lesson pro- 
gram using the MADLIBS program in PILOT. 
Students interactively supply a list of adjec- 
tives, nouns and verbs of the proper tense 
and the program uses Mr. Basener's stony 'mask' 
to write a story. A student then wrote his 
own program to tell his own story. 

Mr. Tim Dawson, our English teacher, uses 
the Stanford Writing Programs by Ellen Nold an< 
Sally Cannom (as appear in People ' s Computer 
Co.) in his English classes. 

Mr. Peter Brown the Director of the 
Learning Farm, uses some PILOT programs 
acquired from Maria Montessori of the Golden 
Gate school in San Francisco for the younger 
children (thanks to Ursula Thrush) . 



WEST COAST COMPUTER FAIRE 



204 



BOX 1579. PALO ALTO CA 94302 



We have developed a few PILOT arithmetic 
and English Grammar programs. Our arithmetic 
programs get progressively more difficult and 
display the student's percent correct (grade) 
and average response time (time to answer a 
question) at each level change. The levels 
start with horizontal addition of two random- 
ly selected numbers less than 5 (5 + 4 = ?) 
and proceed in individualized increments to 
multiplication of two 3 digit numbers and 
columnar addition of three 3 digit numbers. 

The gimmick here is the response-time. As 
the students master the material (grade = 100%), 
they begin competing among themselves for quick- 
er response times. These routines provide self- 
motivated drill and practice. 

The grammar programs are also very simple 
so that there is a lot of positive action on the 
part of the student. One series of programs 
requires the student to identify a particular 
gr amma tical element in a given sentence, such 
as the verb. A second series requires the 
student to identify the part of speech of an 
underlined word in a sentence. A third requests 
a word of a particular part of speech, and then 
weaves the words into a story. In a fourth series, 
the student constructs a sentence from a list of 
words provided by the program. The program then 
checks the sentence grammar. These routines give 
the child experience manipulating symbols. Words 
become things - tools - to be used. 

In order to make this material available to 
users beyond the Learning Farm we are working 
on documentation, the hardest but most necessary 
part of the system. This paper is perhaps an 
element of that task. 

If you are interested in writing course- 
ware or lessonware, contact the PILOT Information 
Exchange at Box 354, Palo Alto, California, or 
the EDUTECH Project, Box 1023, Encinitas, 
California 92024, and you will receive some 
author's guidelines. 

Let me leave you with this advice - write 
the documentation first. 



WEST COAST COMPUTER FAIRE 



205 



BOX 1579. PALO ALTO CA 94302 



EDUCATION OR RECREATION: DRAWING THE LINE 



William P. Fornaciari, Jr. 
Math Dept., Polytechnic School, Pasadena CA 



91106 



Abstract 

There is, in any discipline, a fine line 
dividing serious work and play. So it is with 
computing in schools, and this problem (of 
defining serious work) is magnified by the 
large role that game playing and game 
development assumes in curricula with 
computers. It is inherent in interactive 
computing that CRT's tend to become 
recreational devices -- a visit to a 
university computer where students have 
virtually unlimited amounts of computer time 
on interactive systems (Caltech's PDP-10 or 
Dartmouth's facility, to name only two) will 
verify this. Games appear to be the sole 
activity on terminals (at least upon a general 
inspection) with little "serious programming" 
done at all (serious programming belongs 
exclusively to the batch processor, where 
there is usually a cash ante). With 
microcomputers being virtually universally 
interactive and video-based and the economical 
approach for use in secondary schools, the 
impulse to play games can be addicting beyond 
all reasonable value. After a student starts 
the nth run or version of Star Trek, how can 
you hold the line? 

Introduction 



Perhaps we might ask how many Klingons 
must be destroyed before a student ceases 
learning and is merely passing time, avoiding 
his or her academic assignments? The same 
question may be asked of an educational game, 
say the Huntington Project's "Pest 
Management" [1] : how many flies must the 
student wipe out before the game ceases to be 
educational and becomes solely recreational? 
For this program "as soon as s/he kills the 
flies cheaply" or "when s/he passes biology" 
might do; in general, "how much is enough?" 
might be answered by noting when 1) the 
student starts to modify the game; or 2) the 
student starts to modify the game, by 
resetting variables, to cheat; or 3) the 
student becomes bored with the game and either 
asks "What else have you got?" or gives up 
computer games and wanders off toward other 
ventures. 

The game is a means by which we attract 
people to computers — and perhaps hand out a 
little ethical education. In any of the 
situations of extreme behavior with respect to 
game playing or, sometimes, game development 
(at least of those games which we might 

WEST COAST COMPUTER FAIRE 



consider with little educational value or 
simply variations of the same theme) , the 
educator must reevaluate the role games play. 
Surely there must be other activities. I witto 
to present some experiences and observations 
as a preamble to a short forum on alternatives 
to games which will follow this talk at the 
Faire. Last year, Liza Loop f2] observed: 
"Don't introduce Startrek or gambling games in 
class. You'll never get the kids' attention 
back." Some of my observations are as 
profound, but designed for those who did not 
heed Ms. Loop's advice. They generally apply 
to older students (most students where I teach 
math and supervise computer activities have 
virtually unlimited time fro grade seven 
through twelve). For standardization, 
computer statements are in BASIC. 

Getting Started: Problems 

Without categorically rejecting games and 
their development in a curriculum, there must 
be some other activities the teacher can 
suggest as an alternative to trekking. Perhaps 
we need only look at the batch processor for 
the answer. Most will agree that time spent 
programming a 370 (or whatever) is time 
well-spent (never mind that the computer money 
might not be better spent in other areas of 
research or __ other approaches) ._We batch 
process because we have a problem to solve . 
Why can't this use be fostered in high 
schools? It is important to preserve the 
integrity of of the computer education 
department as a competent entity of problem 
solvers and not game players. Then, and only 
then, will we be asked by our colleagues to 
solve problems, and maybe develop a few. It 
is, of course, not as much fun — at least at 
first. And, upon running short of problems, 
other approaches can be suggested. If work 
seems justifiable, then the time spent on 
games seem to be a little more justifiable — 
some time off for a brief period of 
recreation. I'm not saying no one should play 
games or write new ones for computers; I've 
indulged quite a bit in this pastime and it's 
great. But other things can be achieved with 
as much pleasure, and it is important to 
develop a working spirit. 

Game development reveals a lot : one of 
the most illuminating and frustrating 
afternoons was spent with a particularly 
bright and very imaginative ninth-grader whose 
descriptive abilities had not quite matured. 

206 BOX 1 579. PALO ALTO CA 94302 



He was interested in programming a hide-n-seek 
game of the twenty-second century, where 
players took turns peeking from behind a 
barrier, semi-permeable to laser (or was it 
phaser?) pulses; you got so many chances to 
move or lase, or whatever, until you blew your 
opponent (he hoped would soon be the computer) 
off the face of the screen. "Whew!" I 
declared, "that's some game, but let's play it 
together without the lasers, please." With 
difficulty avoiding reference to the 
futuristic ordnance, this esger fellow (who 
happens to be a good chess player, good at 
math and not a computer novice) to agreed to 
show me his game with a chessboard, a couple 
of pawns, an invisible barrier which we both 
agreed to respect, and notepaper to record the 
results and rules. As it turned out, the game 
was totally undefined, von Neumann would have 
been both pleased (it's clearly a zero-sum 
game) and disappointed (it has no rules) . I 
keep a paperback on game theory near the 
computers, and most are, needless to say, 
dissappointed at its definition. Corollary to 
this, it's a good idea to have a game 
development system: checkerboard, dice, cards, 
a copy of Hoyle, etc. near the computers. 

The above illustrates one of the 
fundamentals that holds computing, and the 
methodology of clearly defined and logical 
procedures we subscribe accompanies it, 
together: if a person cannot verbally describe 
an operation, s/he surely cannot write a 
program to perform it. Problem definition is 
a constant problem (but the effects of its use 
are strongly felt in computing and elsewhere) 
— when is requesting a problem definition 
asking too much? At one point, requiring 
students to request time with a clearly-stated 
paragraph was tried for a couple of days, but 
was not too warmly received; it was hoped this 
would weed out the monopolizers and those who 
were constantly writing trivial programs (10 
PRINT "HELLO"; :GOTO 10) as jokes. At best, 
you can pester students to do this, and to be 
self-consistent, this would require the person 
who might be curious enough to begin computing 
to request, in writing, to play MUGWUMP [3]. 
At worse, the whole operation might succeed, 
and the teacher becomes a miniature 
bureaucracy awarding time for successful 
proposals (this might be educational, but 
let's defer this lesson for as long as 
possible) . 

Working with the Students 

Let your students define with you the 
operating procedure for allocating computer 
time (I've tried limited hours per week by 
sign-up sheet and it's really hard to 
maintain) . Agree to practically anything, 
including unlimited time, but insist on each 
student's having at most three programs or 
projects (two is better) that s/he might work 



„ WEST COAST COMPUTER FAIRE 



207 



on. Then when the project becomes bogged 
down, insist on clearly-defined questions and 
problem definition before you help them out 
(you won't be able to do so any other way). 
The only escape from this, for the* 
undocumenting student, is help from others. 
Reserve the right to restrict this, and you, 
and your trained students, will straiqhten out 
the corner-cutters. 

For those that begin by typing in games 
from the various sources, suggest that they 
limit the associated story to skeletal lines 
and go for the computation statements (note: 
it is imperative that linenumbers be preserved 
in order to assist in proofreading and 
debugging. Also, remember to acknowledge to 
source, author and typist/translator in a 
comment; early adoption of this practice will 
insure later respect of authorship and 
documentation — comments may be minimized, 
but not removed, in later practice an 
original program should begin with comments of 
declarations, entry points, subroutines. The 
program will then seem to write itself.) 
Once a student has completed the guts and is 
satisfied that the game is meaningful, it is 
appropriate to append instructions, fancy I/O, 
etc. Maybe s/he will find the game was not 
all it was advertised to be; s/he will have 
saved some time (lots if s/he doesn't know how 
to type) or possibly have found something more 
challenging. 

On the other hand, a BASIC INPUT 
statement without a prompt message is 
worthless. When posed with a solitary "?" 
during the execution of a program, I am 
tempted to respond to this ERROR 477 [4] with 
"WHO, ME?" and await the usual "REDO FROM 
START" (unless someone was just named "WHO, 
ME?") . While the computer misses the message, 
the programmer seldom does. Error recovery is 
a very important habit to develop. It is not 
to much ask for idiot-proof programs, with 
software designed to work with humans. 
Programs are complete when some proof of 
correctness has been demonstrated; we must 
instill the importance of documentation in all 
students . 

Assembly Language 

Z Assembly language coding is surely one of 
the best activities for those who really 
understand BASIC to the point where they're 
almost bored or keyboard in short programs but 
fail to develop them. To be sure, programming 
m assembler requires time and dedication on 
the part of the teacher, and usually some 
classroom exposure to the instruction set. In 
some circumstances, this may be impossible to 
provide directly, but for those who a true 
prodigies, the manufacturer's monitor listing 
and the chip's manual may be all that is 
necessary, with a few video games from Dr. 
Dobbs' (here the means justify the ends) or 

BOX 1579. PALO ALTO CA 94302 



other source [5]. Programs, utilizing 
memory-mapped output via a VDM or VTI , are 
especially good , because the results can be 
quickly realized. Even if the program blows 
up, some video output has probably evolved, 
giving hope, necessary according to Joyce. [4] 

Start students assembling by having them 
copy programs and patch I/O to your own 
system; pretty soon they'll come up with their 
own ideas, or possibly assist in getting some 
major systems software implemented. Mostly, 
by the nature of assembler, they'll be 
diagnosing errors away from the computer , 
defining their problems more carefully. 

At present, I have a half-dozen students 
working on assembler programs. Excluding the 
student who speaks macros, two are working on 
programs in assembler because it's the only 
way to achieve the speed (ever try to write 
PONG in BASIC using POKE statements?) , one is 
interested in robotics, and several others see 
it as an opportunity to increase their machine 
time, though they don't realize it is actually 
freeing the machines, while puting greater, 
but tolerable, demands on my time. In the 
end, I think, it should pay off as T get six 
reliable programmers to implemet software, 
debug, document and maintain the hardware. 
It's a chance to work more closely with the 
students, and sometimes you wonder who's the 
teacher. They're full of ideas. 

The Unexpected from the Youngest 

In the summer of '77 (which will be best 
remembered for "Star Wars" and a demand for 
more spectacular space games) , I assisted Dave 
Kressen, a veteran, educator ., math, and computer 
science teacher of the junior high (and 
younger) levels, in a "summer school" offering 
of programming micros for students post fourth 
through eighth grade. Dave, with several 
years' experience using Cal tech's PDP-10 as 
the principal computer, had taken task to 
write his own BASIC primer, "The Mathematics 
of Programming in BASIC" [6] , the previous 
year, compiling a dozen arithmetic problems to 
be solved, each adding successively complex 
programming techniques (I generally refer my 
senior high students to this text and suggest 
they try the programs to see how counting 
methods are used, deciding the best conditions 
on IF statements with the multiple statement 
per line BASIC used by micros; Kressen's 
booklet uses ANSI BASIC and hence, is not code 
optimized). For the most part, the older 
students were interested in games, Star Trek, 
and cornering the market on source tapes which 
they might trade at a cash profit, which is a 
problem to be solved. The new fifth and sixth 
graders, having a first "hands-on" experience, 
were going through the mathematical exercises 
and, with only a slight discpplinary hand, 
tending to business. 

WEST COAST COMPUTER FAIRE 208 



When the problem of generating primes by 
Eratosthenes' seive was assigned, quite an 
amazing transformation took place — the 
younger students were absolutely spellbound by 
primes (it should be noted they understood 
what a prime was) , and especially by the rate 
at which the gaps between primes grows. There 
was considerable speculation about when a gap 
of 100 might be found. Tt became necessary to 
dedicate one computer to generating primes 
overnight; this required a premature 
introduction to the one-dimensional array (to 
hold the primes between print-outs) and the 
two-dimensional array (to hold the lower of 
two prime and its associated contending gap) . 

The kid's ideas and questions on this 
particular of how to generate primes faster 
(Kressen's original program used trial 
division by all odds less than the square root 
of the odd integer in question) were 
unbelievable. Ten-year-olds suggested that it 
would be faster to try only known primes as 
trial divisors, and thus a bootstrap routine 
to generate the first primes to 1000 was 
written to produce a basis set. The problem, 
designed to introduce the GOSUB statement, 
captivated the class for over a week, started 
programs in prime-factorization, tests for 
perfect numbers and eager efforts on 
Goldbach's Conjecture (that all evens can be 
expressed as the sum of, at most, two primes). 
When asked about the apparent slow speed of 
the computers (a weekend to generate all 
primes between 200,000 and 900,000) most were 
able to identify the method of programming as 
the ultimate limitation and several suggested 
that the numbers could be represented as whole 
numbers rather than reals to speed things up. 

Motivation and Incentives 

Within most fields, incentives to produce 
a superior product are commonplace, arising 
out of competition rewarded by recognition . 
Practically every aspect of education offers 
incentives, competition and recognition, and 
so it should be within a computer curriculum. 
Certainly writing and debugging a particular 
program are milestones themselves, affording 
the student the satisfaction of mastering a 
demanding servant. Perhaps, also, the numeric 
result achieved will find its place among 
others in a completed piece of research or the 
cataloging of records or similar data 
processing effort. 

Building a library of good software 
requies that we provide these three 
ingredients to the student programmers. An 
immediate recognition of a minimum level of 
quality occurs when others ask for copies of 
programs, and for works of particular value, 
requests that they be made universally 
available (with appropriate documentation) 



BOX 1579, PALO ALTO CA 94302 



introduce new incentives to the student to 
improve the next effort. We must always 
challege his or her capabilities in new 
areas. 

A particularly effective recognition is 
to ask one competent programmer to write a 
particular program. In this instance it is 
particularly important to approach the student 
as a professional. S/he may or may not expect 
clearly specified I/O routines, but after 
having received them, s/he will appreciate 
their value. Commission your better 
programmers with good problem definition, some 
suggested reference materials or algorithms, 
and be surprised by the results — it can even 
be done with novices, if you offer a little 
help. Two students wrote an effective class 
grading program as their third BASIC project 
in only several hours after some preliminary 
meetings about sorting methods, averages, 
medians, data allocation and trying two 
programs out of Kressen's book (they were able 
to translate mathematical algorithms into 
character algorithms after agreeing that "A" 
is no more equal to "B" than 1=2). 

The concept is no different than giving a 
programming assignment to a classroom of 
students and assigning grades; in this 
instance, however, you deal with one or two 
(that's the "gradelike" incentive) and follow 
up by using the commission work, saving it as 
an example of good, complete work which might 
be the basis for the next program 

A modification occurs when the school is 
part of a user's group. We are part of a 
group which has an excellent barter economy 
established. For each program accepted, we 
get box tops worth $15 in exchange programs 
(which usually sell for $3 to $5, which seems 
like a fortune to some kids.) It means we 
get recognition for contributing worthy 
programs, we can save some effort keying in 
programs we don't already have and we get to 
see what others schools are doing with similar 
systems. The biggest problem is a common 
medium of exchange. For users of identical 
equipment, there is little problem, but 
Grimes' [7] observation has been prophetic. 
Schools should be at the head of users groups 
— there are too many opportunities and 
incentives lost without them. The programs 
should not be limited to BASIC, as assembler 
and CAI programs need encouragement and 
resources. 

Finally, end-of-year recognition is no 
more out-of-place in computing than in 
basketball or scholastic achievment. 
Certificates of Excellence should be awarded 
by a knowledgable faculty/professional 
committee and should be vertically 
distributed. The incentives, direct and 
indirect, with adequate recognition will 
produce good competition. The combination 
result in a productive atmosphere where the 
students feel they are truly working, insist 



on conditions suitable for productive work and 
become discriminating and efficient in their 
use of time and resources. They will also see 
the computer as a tool to solve real problems, 
because, in the atmosphere described, that is 
what they hve been doing throughout. 

A Summary of Suggestions 

The following might be useful in 
developing and maintaining a computing center 
where little question of the justification of 
its existence will ever arise. Some 
suggestions have been developed above, and 
others are offered without comment: 

1) Computer educators must encourage 
colleagues in other academic fields to assign 
problems which require computation to achieve 
a satisfactory solution. Numerical solutions 
to long algebraic problems, simultaneous 
equations, even atomic structure and 
solid-state problems become reasonable but 
challenging for high school level science and 
math, as examples; social sciences can use 
simulations and statistics which are really 
just games with a lot of data. 

2) Get and use an assembler. The 
problem solving techniques required to use 
assembly language are applicable in any field; 
furthermore, you'll be able to develop and 
implement a very extensive library of utility 
programs. 

3) Start and maintain a library of 
programs, a use your students to get the job 
done. Insist on documentation before and 
after actual programming. Encourage 
competition and show recognition when earned. 
Participate in an exchange with other 
schools. 

4) Try to promote the idea of data 
processing at the student level, i.e. maintain 
club rosters, newspaper advertising accounting 
on the educational computer. Have students 
write the programs. 

5) Maintain a workroom atmosphere 
relative to the student age level. There will 
still be some frivilous game playing one, but 
usually as a temporary diversion. 

If you must Trek , by all means insist on a few 
basic modifications to the probably most 
widely-found version by Lynn Cochrane [81 . 
The course bearing notation (l=east or right 
to 8.9) is found nowhere on (even 
astronomical) maps. Use the standard polar 
coordinate system where degrees is to the 
right; try accepting angles greater than 360 
and negative bearings (figure another way to 
abort the torpedo or engine command) . For 
advanced students, have them indulge in radian 
measure (in units of pi), and, memory 
permitting, replace Spock with an "on-board" 
computer which returns principal angle 
arc-tangents given rises and runs (remember 



WEST COAST COMPUTER FAIRE 



209 



BOX 1579. PALCKALTO CA 94302 



the division by zero) ; the students can then 
think to figure out the proper quadrant 
adjustment. 

Also, I'm a little incredulous about a 
photon torpedo's (even one from the 
Enterprise) capability to destroy a star — 
disable this awsome feature with a hard fix. 
To do all of this, you will have to look at 
the program. "What to Do After You Hit Return 
[9] makes its biggest point in the value of 
game playing when it suggests the game is not 
so important, it is how it is play and how it 
is programmed. You'll have to figure out how 
Cochrane makes the stars go away before you 
can save them. So for all the problems Star 
Trek has created, here's the praise it 
deserves as being a model program of 
efficiency. A good starting assignment for 
your students: explain where Klingons come 
from! And if they waste those torps on stars, 
or spend afternoons stalking Darth Vader, 
insist they be quiet about it!! Others are 
working !! ! ! 

Conclusions : 

I have attempted to define several areas 
that can be considered productive activity and 
those which are recreational. To justify a 
computer activity as productive is very 
subjective, but a reasonable definition might 
be an activity requiring that an active mental 
process employed to achieve a defined goal — 
work, if you will. And if your goal is to 
destroy 23 Klingons in 30 years, to do so 
might require an active mental process, though 
usually not for long. If given challenging 
problems to solve, encouragement and a little 
incentive, students will opt to solve 
problems. And "problems" are relative, also. 
To a ten-year-old, his or her curiosity might 
be the biggest problem. To an older student, 
using a different language to represent the 
same data and procedures is truly a 
challenge. 

One person's play is another's work — 
how or where do you draw the line? It is an 
important question to ask yourself, and to 
reflect thought and development in your 
computer curriculum. 



is as vague as it appears here. 

5. There are too many references to list, but 
Marvin Wizenread's video games, in several 
issues of Dr. Dobbs Journal , are particularly 
good, as well as reasonably short. 

6. David P. Kressen, "Mathematics of 
Programming in BASIC." unpublished. 

7. Peter S. Grimes, "Classroom 
Microcomputers." Proceedings, p. 165. 

8. Lynn Cochrane, INTERFACE magazine, July, 
1976. 

9. What to Do After You Hit Return People's 
Computer Co., Box E, Menlo Park CA 94025. 



References 

1. Huntington High Scool Project 

2. Liza Loop, "Sharing Your Computer Hobby 
with the Kids." First Computer Faire 
Proceedings, p. 156. 

3. MUGWUMP is a number guessing game, see 
ref. 9. 



4. James Joyce, "Human Factors in Software 
Engineering." Proceedings, p. 56. ERROR 477 
WEST COAST COMPUTER FAIRE 210 



BOX 1579. PALO ALTO CA 94302 



LEARNING WITH MICRO COMPUTERS 

Richard Harms, Santa Ana College 
Santa Ana, CA 92706 



Introduction 

It is interesting that we 
should have in our language the 
idiom "A person learns a bit at a 
time". This paper describes an 
instructional approach based upon 
the micro computer equipped with 
tape cassette. The approach is 
structured around the premise that 
"A person learns a bit at a time". 
Small segments of any topic are 
presented to the student. The 
student works with the material at 
his own rate. Based on his responses, 
individual learning pathes are 
developed. Non-computer disciplines 
including accounting, journalism and 
psychology have been successfully 
implimented. 

The Rationale 

The problem of designing learn- 
ing packages for computer is not a 
new one. Work in CAI (Computer 
Aided Instruction) goes back over 
the past ten years. The cost per- 
formance characteristics have tradi- 
tionally been achieved by spreading 
an expensive resource (the computer) 
over many users and long periods of 
time. It is then generally possible 
to show favorable cost performance. 

With the microcomputer the 
primary cost constraint in CAI is 
eliminated, namely the expensive 
resource. We can then concentrate 
on what should be our primary object- 
ive of computer learning - effective 
learning. It is this objective with 
which we have attempted to work at 
Santa Ana College, and this is the 
nature of my presentation. 

Within the confines of the 
latest widely marketed microcomputer, 
a system has been developed for 
authoring and presenting CAI which 
requires very little computer ability 
of either instructor (author) or 
student. This system is an outgrowth 
of a successful system called GULP 
(General Utility Language Processor) 
which was implimented several years 



earlier on an educational mini- 
computer . 

As is true of other CAI pack- 
ages, two distinct processes are 
required. The first is the author's 
creation of the material and the 
second is the delivery of the mat- 
erial to the student. Both pro- 
cesses are discussed below. 

Creating the Lesson 

As a general level of soph- 
istication within the microcomputer 
state-of-the-art, learning programs 
can, at most, be tutorial in nature, 
including sufficient opportunity for 
student drill-and-practice. The 
microcomputer of today by its very 
intent cannot be used for extensive 
simulation and gaming learning 
models. To prepare the tutorial 
lessons, then, the instructor must 
identify salient points which are 
student important. Prior material 
assumed known or unknown must be 
clearly defined. The instructor 
prepares briefs of each background 
point. Physical constraints such 
as screen size are considered in 
writing the briefs. Briefs of 
student important points are also 
prepared. Meaningful interactive 
questions are developed for each 
brief. Consistent with the initial 
assumption that learning takes place 
"a bit at a time", each fragment is 
kept discrete. 

After the instructor has 
created the text and questions and 
answers for the student learning 
session, an interdependent relation- 
ship is established manually between 
the lesson fragments. This is, in 
fact, similar to the PERT process. 
From these dependencies a linear 
string of fragments must be produced, 
If ties exist, an arbitrary ordering 
must be made because the next step 
in the process is the transfer of 
all fragments to the tape cartridge 
device. The fragments are serially 
chained. Subsequent fragments are 



WEST COAST COMPUTER FAIRE 



211 



BOX 1579, PALO ALTO CA 94302 



response dependent. A correct stu- 
dent response may cause the program 
to route to one fragment, an incorrect 
student response may cause the program 
to route to a different fragment. 
This allows the most flexibility for 
developing materials geared toward 
individual differences. 

The approach is not without 
flaw. If it is necessary to deliver 
the same material twice (i.e. the 
student did not "get it" the first 
time) , the material must be stored 
twice on the tape. Good lesson 
design will keep textual material 
brief enough so that the material 
is still on the screen if the question 
immediately following the material 
is missed. Using this technique, 
the instructor can tell the student 
of the error and refer the student 
to the material still on the screen. 

The program for storing the 
learning fragments, prompts the 
instructor, accepts his input, and 
stores the lesson on the magnetic 
tape. All the instructor materials 
are stored as data on the tape. In 
delivering the data to the student, 
the structure of each lesson is 
such that the delivery program is 
identical for all lessons. 



terminals serve as a great help in 
providing interactive information. 
Not all students attend every class 
every day. We have found the stu- 
dents much more willing to stay with 
us to the end of the semester when 
they have a place where they may 
pick up what they have missed. We 
are very optimistic of the future. 
We look forward to larger micros, 
more capabilities, less expensive 
quiet printers and numerous tech- 
nological advances which will continue 
to make the microcomputer the most 
exciting educational innovation in 
ten years . 



Presenting the Lesson 

After the instructor has pre- 
pared the lesson and stored it as 
data, multiple copies of the tape 
are made.. Tape costs are low and 
the intent is to have available in 
the classroom a copy of any lesson 
for any student at any time. We 
are incoroporating the microcomputer 
into the classroom in much the same 
way that typing classes have trad- 
itionally provided a work station 
for each student. The class is 
conducted (in the traditional way) , 
using the lecture method. Students 
may concurrently follow similar 
presentations on the microcomputer. 
Alternately, if the classroom pre- 
sentation is inappropriate for the 
student (too easy, too hard, re- 
dundant, boring, etc.), the student 
is free to pursue learning at the 
terminal. Some time is allocated 
for learning only from the micro- 
computer. During this time the 
instructor is free to circulate 
about the class answering questions 
and helping on an individual basis. 
Finally, outside of class time, the 



WEST COAST COMPUTER FAIRE 



212 



BOX 1579, PALO ALTO CA 94302 



BACK TO BASIC (BASICS) 

David M. Stone, Teacher, ESS D 
Box 932, Pacifica, CA 94044, 415-589-5900 



The current press to get back to 
basics of education (The 3 R's) comes 
at a time when I, an elementary teach- 
er, can get funded to assemble a com- 
puter for use in the classroom. With 
the help of students and other teach- 
ers, we have developed a program use- 
ing BASIC (Beginners Ail-Purpose Sym- 
bolic Instruction Code) , one of many 
computer languages. 

Three "Computer Program Opera- 
tors", who are students from my fifth 
grade class, set up the computer dai- 
ly for the seven classrooms of 2nd, 
3rd, 4th, and 5th graders who are us- 
ing it this year. My suggestion to 
name them three CPO • s seemed quite 
logical, I thought. My "Star Wars" 
conscious students named themselves 
C3PO's, politely, seeming to have 
agreed with me and correcting my 
misordered science fiction name all 
in the same breath. (It was days 
before I realized that it was not my 
suggestion to which they had agreed.) 
Their diplomacy and understanding has 
been important to all of us involved 
in the project. 

For those of you who are devel- 
oping computer projects or are warming 
up to the idea of bringing your local 
students some familiarity with this 
marvelous tool, I hope I will pass by 
closely enough to what you need to jog 
the right ideas to mind as it seems to 
have happened with the C3PO's. 

The Need 

First in importance, perhaps, in 
developing a computer project is moti- 
vation. When working with a class of 
thirty in fifth grade math, the mathe- 
matical ability of the students may 
range in an approximate bell shaped 
curve from second grade to high ninth 
grade with several of them grouped a- 
bout fifth grade in ability. Chances 
are no two students would have the 
same set of strengths and weaknesses. 

As a beginning teacher in fifth 
grade, I learned that the text book 
the students were using was excellent 
for developing concepts but short on 
developing computation ability. In 
the following years the only thing I 

k WEST COAST COMPUTER FAIRE 



added to the computational part of the 
program was a drill in the math facts. 
Class averages in the ensuing years 
came up substantially. The importance 
of the drill in rote memorization of 
the math facts came home to me one day 
when checking how one student was do- 
ing, who always took about twice as 
long as anyone else in completing his 
drill but almost always got a perfect 
paper. He was in the process of count- 
ing five times five on his fingers 
under his desk. It took him 20 minutes 
at first to do the 40 most difficult 
multiplication facts. During the year 
his time gradually came down on the 
weekly drills to one fourth of his orig- 
inal time at the beginning of the year. 
He came back recently and said that he 
had continued to do well in math in 
junior high. 

It took 20 to 30 minutes to grade 
and record those tests on the math fact* 
in multiplication and division. Not 
everyone had the tenacity to stick to 
the drill and attempt perfection as thai 
one student did. A fair number of 
students had reoccurring difficulty onl} 
with certain math facts while knowing 
others quite well. As you can see it 
all boils down to a situation that the 
computer can handle outstandingly well. 

Implementing the Use of Hardware 

Some students just need enough timt 
to finish in order to improve. Some 
just need to have more drill on certain 
facts. Others could use the time bette] 
by occassionally passing up the drill 
for developing other skills. The set- 
ting where each student works at his owi 
rate and level of difficulty is called 
individualized learning and is getting 
considerable attention in the field of 
education today. 

Enter, microcomputer nearing the 
end of its second year of being bumped 
over deep cracks in our sidewalks as 
it is rolled from room to room on its 
little AV cart. The children can see 
the computer through the clear plastic 
on the lower shelf which protects it 
from accidental injury. As the compute: 
rolls into the classroom the teacher 
continues to teach. The computer oper- 
ator plugs in the computer and the TV 

213 BOX 1 579, PALO ALTO CA 94302 , 



monitor, gets the disc from wherever 
the teacher keeps it in her classroom, 
inserts it in the floppy drive, and 
starts up the first program which es- 
tablishes the date for that day. As 
the monitor leaves, the first student 
in a predetermined order moves to log 
on the computer and the computer has 
chained from the date program to the 
math program. If the student is an 
intermediate grade student the com- 
puter will ask for his last name and 
an identification number. If the 
student is a primary grade student 
the computer has asked whether that 
student was there. If not the com- 
puter asks if the next student is 
there. If the next student types in 
uyii or "yes" the computer asks for 
his identification number. When the 
last student is finished the computer 
asks once more for each student who 
was absent the first time around. If 
time permits the computer also chains 
to an educational game which develops 
some concept such as "is greater than" 
(>) or "is less than" (<). 

At the end of the morning or af- 
ternoon the computer operator comes 
in to remove the computer and returns 
the disc to where he found it. Mean- 
while the teacher has continued to - 
teach uninterrupted. Even in the low- 
est grades a computer operator aide 
can be found to correct small problems 
like "input error" or call the upper 
grade operator if it's something that 
can't be corrected by the keyboard. 

One second grade substitute 
teacher I talked to one morning was 
very fearful of taking on the computer 
especially since a new logging on pro- 
cedure was to be used that morning. 
I explained the procedure to one of 
my computer monitors in a few seconds. 
He explained it to his assistant and 
was not called back the rest of the 
morning. At noon I asked the sub- 
stitute how it went. She was all 
smiles and relief. She said, "Great! 
It was simple! " 

At the end of the day or whenever 
she has time the teacher takes her 
disc down to the teletypewriter to get 
a printout that looks something like 
A-l. Some teachers just send the disc 
down for a print out. 

The Use 

The primary concerns of the pro- 
gram are that the students always 
achieve an adequate rate of success 
and that the administration of the 
program is acceptable to the indivi- 
dual teacher. To the low achiever 



success seems to be a strong motivator. 
To the high achiever success and an 
adequate challenge seem to be the key. 

At this writing it seems we are 
able to meet the needs of all students. 
This is done in two ways. First, 
through variables in the program that 
automatically move the student from one 
level of difficulty to the next which 
are chosen by the teacher before the be 
ginning of the year. Second, other var 
iables may be changed for an individual 
after he has shown a need for more time 
or a different kind of problem. For 
example, the teacher may change this 
variable by herself by loading and 
running a program which gives her con- 
trol over any variables which she may 
want to adjust for an individual studen 
or perhaps the whole class. 

You can see from the preceding re- 
port that the teacher is relieved of 
some time in correcting papers, making 
dittoes, and running them off (which 
also saves paper) by using a computer. 
The teacher's valuable time and ex- 
perience is moved away from clerical 
work to focus on evaluation and even 
encouragement. (At the end of the 
student's drill, one of perhaps several 
comments tailored to his or her person- 
ality, could be printed out.) Control 
of the students' educational welfare 
is, therefore, comfortably in the in- 
dividual teacher's control. 

If what you would like to do is 
somewhat like what I have just describ- 
ed, some of the following hardware 
thoughts may be important to you. 

Hardware Considerations" 

If funds are limited, get a com- 
puter which will be able to handle time 
sharing. When you get the money to 
expand to more terminals you can do it. 
Almost 200 students use our computer 
each week at my school. This gives 
them about two minutes each. (A fifth 
grader can do forty multiplication 
facts in that time.) Two terminals 
would give each student twice as much 

time. Three terminals would 

well, you can see my point. 

The importance of some sort of 
timesharing hardware comes home when 
you only have to sit down at one ter- 
minal to ask only one disc to give you 
a listing of the events of the day 
from your students. Remember, comput- 
ers are here to save you time and work. 

A timing routine or hardware de- 
vice is important. Students who don't 
get on during the day because someone 
else is very slow get upset and they 
upset the slow student. Lincoln Semi- 



WEST COAST COMPUTER FAIRE 



214 



BOX 1579. PALO ALTO CA 94302 



conductor of Sunnyvale, CA has a rea- 
sonably priced and, from my experience, 
reliable timing board. What I'd like 
to find though, is an affordable board 
that doesn't need to be told the month, 
day, hour, minute, and second when the 
computer is first turned on. Something 
powered by a small battery might do the 
job. 

The Future 

One hardware note for the future : 
keep an eye out for interactive video 
discs. Phillips and MCA are working 
independently on players for the ed- 
ucational and industrial (EIT) users 
(1). Conducting a discussion while 
using a computer controlled video 
display could be just a year or two 
away. Imagine controlling the ani- 
mation, as it happens, to illustrate 
your point. It may be the most en- 
gagingly happy experience you or your 
students have enjoyed in school. 

REFERENCES 

(1) Braun, Ludwig, Video Discs : 
Magic Lamps for Educators? , 
p. 14, People's Computer, Vol. 
6 No. 4, Jan. -Feb. 1978, 1263 
El Camino Real, Box E, Menlo 
Park, CA 9402 5. 

APPENDIX 



A-l 


















Teacher ?Stone 


















Is this a parent 


report. 


?N 














January 14 
ID NAME 


COR 


TOT 


% 


TIME 


SGN 


AV% 


AVT 


RN 


1 Randall S. 

2 Dave S. 

3 Don D. 


24 
35 
40 


25 
37 
40 


96 

94 

100 


1: 29 
2: 1 
1: 20 


+ 
/* 


98 

94 

100 


1: 10 
1: 34 
1: 20 


2 
2 

1 



COR = Number of Correct Problems 
TOT = Total Problems Attempted 
% = Per Cent Correct 
TIME = Time on Drill Exercise 
SGN = Sign of operation to be done 
AV% = Average percentage of all attempts 
AVT as Average time of all attempts 
RND = Round or number of turns at the 
computer 



WEST COAST COMPUTER FAIRE 215 BOX 1579, PALO ALTO CA 94302 



A COMPREHENSIVE COMPUTER SCIENCE PROGRAM FOR THE 
PERSONAL CONFUTING SYSTEKS 



SECONDARY SCHOOL UTILIZING 



Kelvin L. Zeddies 

1854 Pacific Beach Drive 

San Diego, CA 92109 



ABSTRACT 

It is well known within the computer 
science community that computers are 
trans-disciplinary. They provide, 
in many ways, a unifying influence 
for educational experiences. Now 
that the shock of personal computer 
system availability has subsided, 
we must, develop and implement 
programs in the schools that provide 
students with experiences enabling 
them to use personal computer 
systems. 

This paper presents a computer 
science program for the secondary 
school. The program covers both 
hardware and software areas. 
Course titles, descriptions, 
outlines, and suggested references 
are included. 



TEXT 

Today we have available inexpensive 
highly reliable computer systems; 
personal computer systems. The 
impact of -these -systems has- not 
been strongly felt yet, but it 
will be of ever increasing signif- 
icance as these systems become widely 
used. Right now we need to utilize 
these fantastic little machines in 
our educational institutions. They 
are not only capable of performing 
great amounts of mundane work at a 
fraction of the human cost in time 
and energy, they are a marvelous 
teaching resource, allowing for wide 
application in every subject area. 
They have enormous potential for 
providing students with the oppor- 
tunity for creative thinking, problem 
solving, and expanding awareness, 
also synthesizing knowledge. 

It has been several years since 
personal computer systems first 
appeared upon the scene, students 
in some classes have had the oppor- 
tunity to develop a basic system. 
But what now? Now that we have the 
computer system, what do we do with 
it? Unless we address ourselves to 

WEST COAST COMPUTER FAIRE 



this question, schools' will become 
even more out of date, and the 
computer will become an idle piece 
of furniture in the same manner as 
the overhead projector, and the tape 
recorder. 

we must take advantage of the myriad 
possibilities computers offer. We 
need to develop and implement a 
scheme which will utilize computer 
systems in the schools. We need a 
computer curriculum that can be 
incorporated into the offerings of 
any school v-.'i!.-* =. mini ;um of dis- 
ruption, and which will provide 
students with the background and 
kmowledge needed in this area. The 
following courses, several of which 
have been implemented, are proposed 
to enable the schools to begin up- 
dating and incorporating the computer 
into the general curriculum. Com- 
puters are already in the mainstream 
of society, and should have that 
position and acceptance in the 
schools as well. These courses are 
'xtrrtrrely relevant and are vitrually 
needed by today's technologically 
extended student. The proposed 
curriculum would form a strong, 
viable program which would provide 
students with the knowledge and 
abilities needed at this time, to 
function in an increasingly 
computer oriented society. 

Each of the following courses could 
earn the student 1 semester of credit 
and have a maximum duration of one 
semester. Students might move 
through the sequence in a variety of 
ways, depending upon their interests 
and abilities. However, the first 
two courses are prerequisite to all 
others. Students may elect to 
challenge the contents of a course 
by examination, which is oral and 
written, and is administered by a 
computer science teacher. Successful 
challenges would move onto the next 
course in the sequence. It would be 
at the descretion of the principal 
whether to grant credit toward 
216 BOX 1 579, PALO ALTO CA 94302 



graduation for successful challenges. Computer Technology I and II 



Course descriptions are given in 
outline form only, space does not 
permit any detail. 

Computer Science I 

An introduction to the area of 
computer science which would 
include programming in BASIC, 
a study of computers in society, 
and an examination of the 
characteristics of computers. 

Objective: At the termination 
of the course each student will 
have developed, debugged, and 
run 10 programs that utilize the 
language BASIC, and the techniques 
of structured programming. Students 
will also have developed one project 
or program on a topic of their o%m 
choosing. All programs and projects 
will be presented to the instructor 
with a run and a listing of each 
program. 

Topic sequence: 
What are computers? 

limitations 

advantages 

human problems 
Communicating with your computer 

terminals 

cards 

other 
Programming 

structured flowcharts 

programming in BASIC 

debugging techniques 
Developing your own programs 

determining if you can do it 

limiting the problem 

using your resources 

testing your hunch 

final production and publication 
Course project. 

Selected references: 
Albrecht, R., et. al. BASIC . 

New York: John Wiley and Sons. 

1973. 
Hamming, C.L. Computers and 

Society . New York: McGraw-Hill 

Book Co., 1972. 
Kemeny, J. Man and the Computer . 

New York: Charles Scribner's 

Sons, 1972. 
McGowan, C, et. al. Top-Down 

Structured Programming Techniques . 

New York: Petrocelli/Charter. 

1973. ' 



This course presents the student 
with the opportunity of studying 
the computer and how it functions, 
maintenance, and troubleshooting 
techniques. The use of test 
equipment and component re- 
placement are also covered. 

Objective: At the end of this 
course each student will be 
able to determine if a system 
is functioning properly, if not 
to troubleshoot at the block 
level using appropriate test 
equipment and techniques to 
bring the system up once again. 
The student will also be able 
to identify and replace mal- 
functioning components at the 
board level. 

Topic sequence: 

What do computers do and how 

do they do it? 
Block diagram level of operation 
Electronic circuits 
Component level of operation 
Test equipment and it's use 
Troubleshooting strategy and 

techniques 
Comprehensive examinations 

written 

practical. 

References : 

3yst^:n j.-ianu-.i ~ .'or the specific 

systems being used 
Test equipment manuals 
Handouts prepared by instructor 



Computer Technology III 

This course provides the student 
with the opportunity of exploring 
the construction of computers 
and related equipment. Students 
will be encouraged to construct 
from kits or components, items 
of use in a computer system. 

Objective: By the end of the 
course each student will have 
developed a computer device 
(anything related to comDuting) 
and demonstrated its proper 
functioning to the instructor 
and/or class. The student may 
use any resources within the 
community. 

Topic sequence: 
TTL 



WEST COAST COMPUTER FA1RE 



217 



BOX 1579, PALO ALTO CA 94302 A 



Integrated circuits 
Theory and application of 

experimentation 
Techniques in electronics 
Design considerations in 

electronics 
Use of design information 

(manufacturer's data) 
Project. 

References: 

Articles from issues of: 
BYTE, Interface Age, 
Personal Computing, 
Kilobaud, and Popular 
Electronics. 



Computer Science II 

A study of the application of 
decision tables, modularity, 
data structures, sorting, and 
simulations. 

Objective: Each student will 
be able to produce at least one 
computerized simulation by the 
end of the course. The topic 
or area of the simulation will 
be agreed upon by the instructor 
and student. A listing, and run 
of the simulation will be present- 
ed to the instructor as the course 
project. 

Topic sequence: 

Modularity in programming 

Decision tables 

Applications of decision tables 

Files and their uses 

Matrices 

Cassettes and discs 

Sorting 

Developing simulations 

what are they? 

characteristics of simulations 

designing simulations. 

programming 

implementing 
Project. 

References: 

Flores, I.(ed). Computer Sorting . 
Englewood Cliffs, N.J.: 
Prentice-Hall, 1969. 

McDaniel, H. (ed). Applications 
of Decision Tables . New York: 
Bradon/Systems Press, Inc., 
1570. 

Maidment, R. and R.H. Bronstein. 
Simulation Games . Columbus , 
Ohio: Charles E. Merril Pub- 
lishing Co., 1973. 

Selected articles from: BYTE, 
Creative Computing, 

WEST COAST COMPUTER FAIRE 



Interface Age, Dr. Dobb's 
Journal, and Kilobaud. 

Computer Applications in Eusiness 

A survey of the applications of 
computers to the field of 
business. Students will develop 
applications in any area of 
business: marketing, management, 
accounting, etc. 

The actual content of this course 
will vary from student to student. 
Specifications of the course 
content will be stated upon 
a student-teacher contract. 
(see Appendix B) 

Sample Objective: The student 
will develop and run a computer 
program that will process 
data in the area of accounting. 
The program will produce a 
full inventory, with . sales 
trends on a month by month basis, 
and include an automatic reorder 
feature. This project will 
be completed and submitted to 
the instructor before the 
termination of the course. 

References: It is suggested that 
the student be encouraged to 
survey the publications: BYTE, 
Interface Age, Creative Computing, 
etc. Also contact business persons 
in the community for information 
a~5" "to what" is actually needed. 

Computer Applications in Mathematics 

This course provides the student 
with the opportunity of exploring 
computer applications in the area 
of mathematics, including: number 
theory, geometry, numerical 
analysis, and statistics. 

Again, the actual content of this 
course will vary from student to 
student. A student-teacher 
contract will explicitly state 
what is to be accomplished. 

Sample Objective: The student 
will develop and produce a 
computerized study of the residues 
in mod 7 systems. The developed 
materials will be presented to the 
instructor at the end of the course. 

References: Mathematics texts, 
and programming manuals. Again 
the student should be encouraged 
to review the periodicals. 
218 BOX 1 579, PALO ALTO CA 94302 



Computer Applications in Natural 
Science 

This course covers applications of 
computer technology to the areas of 
physics, chemistry, biology, earth 
sciences, astronomy, biomedicine, 
etc. 

The actual content of this course 
is determined by student-teacher 
contract. (Appendix B) 

Sample Objective: The student will 
produce a computer simulation in 
chemistry, specifically dealing 
with the determination of safe 
combinations of elements. The 
student will present to the 
instructor by the end of the 
course, all materials developed 
and tested, with a run and list- 
ing of each program. 

Sample Objective: The student 
will produce a simulation in the 
area of physics that demonstrates 
the behavior of projectiles in any 
atmosphere (Earth, Mars, Pluto, 
etc.). The student will present 
the simulation to the instructor 
with a run and listing before 
the end of the course. 

References: The references again 
will vary with the topic and the 
student. Standard texts in the 
subject areas, programming texts, 
and periodicals should be used 
as references. 

Computer Applications in Social Science 
Science 

This course provides the student 
with the opportunity of exploring 
applications in the social sciences 
including: psychology, history, 
economics, anthropology, sociology, 
and political science. 

The content of this course will 
be determined by the student and 
teacher through the use of a 
contract. (Appendix B) 

Sample Objective: In the area 
of political science the student 
will develop a computerized 
voting preference projection for 
a local election. The finished 
program should have been tried 
in an actual election situation. 
The materials, run and listing, 
with results of application, will 
be presented to the instructor 



at the end of the course. . 

Sample Objective: In the area of 
economics, the student will produce 
a computerized stock market analysis 
that will i; -ludo: h.'ghs, and lows 
for the year, and projections, 
based upon passed performance. 
The student will submit to the 
instructor a run and listing of 
the material developed during the 
course. This material must be 
submitted before the end of class. 

References: The materials needed 
to produce computer applications 
in this area or areas will vary. 
It is suggested that the student 
survey the regular texts, and 
periodicals in the area of his/her 
study. 



Independent Study in Computer 
Applications 

This course will allow the student 
the opportunity of exploring 
applications in the areas of: 
music, art, danc^, literature, 
counsri-rg, etc. Areas not 
covered in any other course in 
the field of computer science. 

The content of this course is 
so variable that contracts 
between student and teacher 
are needed. (Appendix B) 

Sample Objective: The student 
will develop a computer program 
that will generate poetry, in 
the proper meter. The program 
will be presented to the instructor 
this includes a run and listing. 

Sample Objective: The student 
will produce a computer generated 
musical composition, and play 
the composition for the instructor. 
This will be accomplished before 
the end of the course. A run 
and listing of the program must 
also be presented to the teacher. 

References: In addition to the 
periodicals mentioned earlier, 
all available books, and persons 
familiar v/ith the area of study 
should be used as references. 

Note: Additional ideas and 
objectives can be found in 
Zeddies pages 61-67. 



WEST COAST COMPUTER FAIRE 



219 



BOX 1579, PALO ALTO CA 94302 



Computer Science xxl 

This course provides the student 
with the opportunity of studying 
assembly language, and machine 
coding. 

Objective: The student will be 
able to produce at least five 
programs in any area, in assembly 
and/or machine code. The student 
will also develop an approved 
project and present it to the 
instructor with appropriate 
verification of correctness and 
execution. 

Topic sequence: 

Assembly language 

composition 

usage 

applications 
Machine coding 

composition 

usuage 

applications 
Programming in assembly 
language 

Programming in machine 
code 
Project. 

References: 

Appropriate manuals from 
manufacturers of cpu chip. 
Instructor developed hand- 
outs. 



Independent "Study in Computer 

Languages 

The course allows the student to 
study computer languages such as 
FORTRAN, etc. 

The content of this course will 
have to be defined through the 
student- teacher contract* 
(Appendix B) 

Sample Objective: The student 
will develop, run and debug 
10 programs. The student will 
present to the instructor a 
listing and run for each of the 
10 programs. All programs are 
to be written in FORTRAN. 

References: The references 
needed in this course will 
,__y vary and therefore need 

to be stated on the contract. 
Include texts, and periodical 
articles. 



Independent Explorations in 
Computer Science 

This course allows the student 
to explore the areas of trees, 
searching, compiler writing, 
and other advanced topics of 
interest to the student. 

Again the contents of this 
course will vary with the 
student. A contract should 
be used to explicitly state 
the material to be covered. 
(Appendix D) 

Sample Objective: The stu^-jr-- 1 
will develop an inter pre tor 
that will function within the 
limits of the available system. 
The completed project must be 
demonstrated for the instructor, 
and a written listing submitted 
at the time of demonstration. 

References: References will 
vary depending upon the topic 
of study, however the periodicals 
should be surveyed and it is 
suggested that you consider: 
Aho, A. V., et. al. The Design 
and Analysis of Computer 
Algorithms . Reading, MA: 
Addison-Wesley Publishing 
Co., 1976. 
Gries, D. Compiler Construction 
for Digital Computers . New 
York: John Wiley and Sons, 

1-971. - - - - - - 

Knuth, D.E. Fundamental Algorithms , 
vol 1 of THE ART OF COMPUTER 
PROGRAMMING. Reading, MA: 
Addison-Wesley Publishing, 
1973. 



The proposed courses are not to be 
traditional in nature. They are 
quite individualized and are prob- 
ably best incorporated into the 
present curriculum in a multi- 
level configuration in which a 
classroom of students will be made 
up of several smaller groups of 
students, with each group pursuing 
a different course of study. This 
form of instruction allows a great 
deal of learning to occur between 
students, and enables the teacher to 
assume the role of a consultant, 
rather than the fountain of all 
knowledge. This also allows the 
students to observe the teacher 
in action as a learning being, 



WEST COAST COMPUTER FAIRE 



220 



BOX 1579. PALO ALTO CA 94302 



similar to the situations that 
would be found in a university or 
research center. In keeping with 
this format of organization, the 
teacher might want to consider the 
following: students are divided into 
groups of approximately 10, with 
each group having some beginning 
students, some advanced and some 
intermediate students working on 
projects of varying sophistication. 
The function of the groups is two 
fold: First to provide working 
groups with the opportunity to 
expand each student's understanding 
of the computer science area, and. 
second, to allow groups to meet in 
seminars where students can report 
to the group concerning their past 
two weeks work, their problems, and 
their accomplishments. In these 
seminars much information is present- 
ed and helpful suggestions are freely 
offered, the teacher also participates 
but does not dominate. 

The amount of equipment needed to 
implement this program would be 
minimal and could even be phased 
in over a period of two years. It 
is suggested that a minimum con- 
figuration for the entire program 
would include the following items. 

1. A multi-user system for 4-6 
terminals and at least BASIC, with 
discs, and cassette I/Os. 

2. A small system one user for 
assembly and machine coding courses. 
This system could also have a 
compiler/interpretor for wider 

use. 

3. A system with the capability of 
several languages. To be used in 
the more advanced courses and for 
heuristic explorations. 

It should be possible for all 
the systems to be configured for 
use as a computer network when 
this would be desired. 

4. A reference library that 
would contain books and materials 
covering : 

computers in society 
computer security 
computer hardtvare design 
manf acturer ' s data on CPUs 

and ICs 
structured programming 
algorithms 
computer applications in 

various disciplines 
compiler construction 
system development 
data handling. 



Also students would be in need of 
materials covering: 

numerical analysis 

simulation construction 

Boolean algebra. 

In addition to the above, subscriptions 
to the following periodicals should 
be maintained: Byte, Kilobaud, 
Creative Computing, People's Computer, 
Dr. Dobb's Journal, Personal Computing, 
and Popular Electronics. 

A diagram of the course sequence 
is' included in Appendix A. This 
diagram should clarify the sequence 
of courses as suggested in this 
paper. 



CONCLUSION 

The computer science curriculum 
proposed in this paper is but one 
possible configuration. This 
configuration presents the student 
with the opportunity of pursuing 
studies in the area of computer 
science at a depth beyond what many 
educators would believe possible. 
However, the work being done in the 
field of computer science at this 
time is basically the work of young 
people, and onemust not forget that 
young students are less hampered 
by the cultural inhibitions" which 
limit and stultify older generations. 
The experiences of the author have 
convinced him that the proposed 
curriculum is not only possible, it is 
a necessary change. 

The school system is guilty of sever ly 
limiting it's students, of failing to 
adequately prepare them with the kinds 
of knowledge and experiences needed 
in the face of the present day tech- 
nology. We must do a better job of 
meeting the challenges presented by an 
ever expanding technology. We must 
utilize all the resources available 
and provide our students with the kind 
of educational opportunities so vital 
to them in this day and age. 

BIBLIOGRAPHY 

Zeddies, M.L., et. al. Individualized 
Instruction for Gifted Students 
Using Computer Time-Share Systems . 
San Diego: San Diego Unified 
School District, 1974. 



WEST COAST COMPUTER FA! RE 



221 



BOX 1579, PALO ALTO CA 94302 



U 
C 
GJ 
P 
0< 
<D 
CO 

Q 

w 

u 
P 
o 
u 

in 
o 

E 

<a 
u 

id 

Q 



£> 



H 



O 

rH 

C 

XL 
U 
0) 

<U 
+> 

E 
O 
U 



K 



ca 



ft 



O 

rH 
O 

c 
xl 
u 

(U 

■P, 

3 
C. 
E 

o 

u 



H 
M 
H 

<D 
U 
C 
<D 
•H 
U 
CO 

u 

o 

p 



u 



V 



to a; 
w c u 

o o c 

«d -P -h 
p <d u 

cp u to 

c o 

X -P 

&td P 

e 
-p E 
c o 

QJ U 

a 



o 

U 



•O -H 
CO C 



VHH, 

LJ a 



h 



cu 

U 

c 

CD 
•H 
U 
CO 

U 
<D 
-P 

3 

O 

u 



o 

W d> <L) -H 
U U U -P 
•H C C id 

w -p cd <d u 

W A3 'H -H -H 

0) £UUH 

c o to co a 

•h x: u 

w -p -p u < 

3 n) ia o 

I I I I <L> 

W W W W -P 
C C C C P 

o o o a 

H -H -H E 



o 

•H 

+j 4-> -p -p d 

(d fd (d fd u 

u u u u 

•H -H -H -H C 

H H H H -rl 

a a a o, 

< < < < H 




H 

CU 

u 
c 
o 

•H 

u 
to 

CJ 

■p 
p 

CU 
£ 

o 

u 



APPENDIX E 

COMPUTER SCIENCE CONTRAC 



Narre: 



Course: 



Dates: begin_ 
Faculty: 



,end 



bourse Objectives: 



Resources Required: 



Projects to be Produced: 



Evaluation. C.r i ter i a : . 



Contract Approved by: 

Student : 

Faculty: 

Date: 



Contract Completed: 
Faculty Signature:, 
Date: 



Grade: 



Contracts to be made out 

in duplicate with each party 



receivma a codv, 



WEST COAST COMPUTER FAIRE 



222 



BOX 1579. PALO ALTO CA 94302 



MICROPROCESSOR COMPUTES SYSTEM USES IN EDUCATION 
(or, You Can Do It If You Try) 

Robert S. Jaquiss, Sr. f North Salem High School, Salem, Oregon 97301 



Abstract 



Now is the time for the (micro )computer to 
become widely accepted as a teaching tool in 
the subject area classrooms of mathematics, 
biology, chemistry, physics, business and 
social studies. 

This can be accomplished by the use of micro 
processors and the establishment on a high 
school level of a Computer Science Depart- 
ment which will implement a series of 
computer courses. These computer classes 
will form the basis to carry computer usage 
to the subject area classrooms. 

Teachers in the subject areas will need to 
be re-programmed to accept computer usage 
and to include computer usage in their 
lesson plans. 

There is need to make a 5-year plan for the 
acquisition of computer facilities, classes 
to be taught and specific programs to be 
implemented in specific classes. 

Statement of the Problem 

The computer has not been used to its full 
potential in education. 

The problem will be restated in various 
positive statements. 

The high cost is one reason computers have 
been used so little in education. Modern 
technology in the form of microcomputer 
systems is providing the capabilities to 
use the (micro )computer as a tool in the 
subject-area classroom at a more 
reasonable cost. The computer may be used 
as a teaching tool in many clever ways. 

Teacher T raining . Because this technology 
has come on the scene so rapidly, many 
teachers have received no instruction in the 
use of the computer as a teaching tool. In 
addition to not knowing how to use the 
computer as a teaching tool, these same 
teachers may fear the computer. 

The solution to these various statements of 
the problem seems simple. Just make use of 
available technology in education. 
This may be easier to say than to do. 



I have a plan 

Much software in BASIC already exists as 
the product of the last several years of 
research and computer use. 

The hardware to make use of that software 
is now available in the microprocessor 
based computer system. 

All we have to do is put the hardware and 
the software together in our school system. 

What A Micro Can Do 

In preparing this talk I wrote several pages 
about the capabilities of the microcomputer 
system. Perhaps those of us here already 
have a pretty good idea of what a micro- 
computer can do. On the other hand, perhaps 
some of you came here to the San Jose 
Computer Faire to find out what a micro can 
do. I guess that is why I came — to find 
out more about what is, and what will be 
available in the micro world. 

What did the Mini say to the Maxi Monster? 

"Anything you can do I can do better." 
And what does the Micro say to the Mini? 

"Anything you can do I can do better." 

If you haven't heard it before, then hear it 
from me. Practically anything you ever 
heard of a computer doing is being done by 
someone's microcomputer. In the exhibit 
area there are micros that talk, play music, 
draw pictures, make graphs and charts in 
color; some even compute. 
Did you see the walking talking computer? 

A micro can turn your lights on and off, 
lock your doors, call the fire department, 
keep your financial records and teach your 
children math or play games with them. 

A microcomputer system can be used 
effectively in the educational process in 
your school in math and science, English 
and social studies. All that is needed is 
to get the hardware and the software 

together and one more thing you. 

You will have to do the getting and putting 
because you are obviously the person in your 
school that is interest in computer use in 
education. 



WEST COAST COMPUTER FAIRE 



223 



BOX 1579. PALO ALTO CA 94302 



How to get hardware 

Establish a need . As you have noticed, I 
assume that some of you are teachers. OK 
Teach, try this. Walk into your princi- 
pal's office at 7:30 Monday morning, lean 
dramatically on his desk, look deep into 
his eyes and say: 

"The school district is failing in its 
obligation to teachers and students to 
provide modern equipment to use as tools in 
the teaching of academic classes and is 
therefore lessoning the value of the 
education provided to the students in our 
school. 

"The district may be considered negligent in 
not obligating teachers to seek additional 
training in the use of computer-based 
instructional methods. 

It is my guess that my now you have the 
principal's full attention. While the 
principal is trying to decide whether to 
fire you on the spot or give you a week's 
notice, you must quickly take a deep breath 
and continue- 

"Students are being denied the opportunity 
of experiencing hands-on use of modern 
equipment made available by the development 
of the microcomputer. 

The principal has probably gotten to his 
feet. You must say something soothing 
before he can get a word in edgewise. 
"Come let us reason together." And continue, 

"Our citizens of tomorrow are being deprived 
of the opportunity to use, see, and manipu- 
- late computer based - simulations-,- tutorials , 
and problem-solving techniques in the 
curriculum areas of biology, chemistry, 
physics, social studies, mathematics, 
business and even foreign language, because 
the equipment is not available for teacher 
and student use. 

At this point, the script calls for the 
principal to be seated again. With a smile, 
because he has decided you are not really 
dangerous, and because he has remembered 
plan X, he has an answer ready for you. 

The principal will say to you, "There just 
might be something to what you are saying 
Mr. Smith. Write up a proposal to take care 
of these problems. Justify all the parts of 
the proposal. Make out a list of equipment 
you will need, and the cost, and project it 
on a 5-year plan." 

Of course he will have to approve the 
proposal and pass the proposal up the line 
to program planning and evaluation. 



Justify the Need 

I suggest that you subscribe to a number of 
computer journals and read some books. 
One' article I like is "The Rhetoric of the 
Computer" by Barbara Marsh published in the 
Jan-Feb, 1978 issure of Creative Computing . 
On page 131 she says, 

"I believe people ought not emerge from 
schools at the mercy of what they see on 
television, what they read in the newspapers 
(if, infact, they read), or what a computer 
analysis tells them is the case. The 
television may define what are "the issues", 
and computer analyses may provide "the 
answers," but we must try to provide an 
education which leaves room for students to 
make their own evaluations and decisions. 
They should be able to assess the 
appropriateness of the computer mediation 
of the information dealt with, and have some 
idea of where to look to find what computers 
leave out. I think one way to make this 
more likely to happen is to have teachers 
who are able to think about computers as 
persuasive media whose output must be 
evaluated." 

This article is one of a growing number of 
articles about computer literacy. 

Another article in the same issue, written 
by Cashman and Shelly with a very long 
title beginning, »"Hands-0n" And Fast Turn- 
around..." has some good thoughts. 
Cashman and Shelly say, "Teaching programm- 
ing without access to the machine is like 
teaching chemistry without access to a 
chemistry lab or teaching literature without 
reading a brook."" 

Cashman and Shelly are writing about using 
computers only to teach computer programming 
The reader should not be so narrow-minded. 
Computers should be used as a tool in the 
educational process . The points made in the 
article are very valid, but the scope should 
be enlarged to all users and not just 
computer programmers. 

ANY student should be able to use the 
computer in an interactive mode to the 
limits of his general ability . 

Cashman and Shelly provide a quote from a 
book by John Kemeny, Man And The Computer , 
published way back in 1972 by Charles 
Scribner's Sons, pages 80-81. Allow me to 
read this quotation to you. 

"I consider it imperative for the benefit 
of mankind that during the next decade 
computers become freely available to all 
colleges and universities in the United 



WEST COAST COMPUTER FAIRE 



224 



BOX 1579, PALO ALTO CA 94302 



I States and that most students before 
I graduating acquire a good understanding of 
| their use. Only if we manage to bring up a 
computer-educated generation will society 

have Modern CO*""te'' , s fully airailoKIs *■ ~ 

solve its serious problems. While computers 
alone cannot solve the problems of society, 
these problems are too complex to be solved 
without highly sophisticated use of comput- 
ers. I see three major bottlenecks that 
must be removed if this goal is to be 
achieved. 

"First, most university computation centers 
are still research-oriented. They are .... 
typically operated in a batch-processing 
mode with priorities given to a very small 
number of users who need a great deal of 
time. The philosophy of the university 
computation centers must be changed. 

"Second, college administrations do not yet 
appreciate the immense favorable impact 
that a good educational computation center 
can have on their institution. I would like 
to propose that by 1980 no college or 
university should be given full accredita- 
tion unless computer services are freely 
available to all students. Use of the 
computation center must be considered the 
exact analogue of the use of the library. 

"Finally, the implementation of this pro- 
gram for millions of students will take a 
great deal of money..." 

It is to quotations such as this that we 
may turn to for justification of the 
existance of a computer use program. 
Kemeny, and others, looked to the future. 
It is because of their efforts that the 
university computer centers have greatly 
improved since these words were written. 

Some colleges and universities now require 
a class in computer programming or 
statistics to graduate. At some institution 
consideration is being made to make a class 
in computer programming an entrance 
requirement. 

We might amend Kemeny' s words to include 
high schools: No high school should be 
given full accreditation unless computer 
services are freely available to all 



students. 



Kemeny had no way of knowing that the 
computer on a chip would become a reality 
so soon. While the implementation of a 
computer usage program in high school will 
take some money, the amount is many times 
less than what would have been required a 
few years ago, and the expectation is much 
greater. 



WEST COAST COMPUTER FAIRE 



The solution 

Simply get the hardware, the software, and 
£ou all together. You see, it all depends 

The school district should resolve to act 
with all possible intelligent purposeful 
planning to implement the use of the 
computer as a teaching tool. 

Computer Classes In High School 

Your school should have a Computer Literacy 
class to teach about computers and how to 
use them, how to use canned programs and 
how to do a little programming. Then the 
school should provide a Beginning Program- 
ming class for students who find they like 
computer programming. Finally, there should 
be an Advanced Computer Programming class. 
It is the advanced class that will run the 
systems, encourage others, write original 
programs, modify the library programs to 
work a little better and take the computer 
to subject area classrooms for 
demonstrations. 

Eventually one of the teachers will take the 
portable terminal to his classroom for a 
week to run simulations in biology class. 

This system is working for me and it will 
work for you. I also have students on an 
independent study program. 

Costs 

Someone is going to ask about the money 
necessary to implement a new program. I am 
sure that the purchase of the first 16-mm 
projector for your school was a real event. 
Someone had to decide to purchase the first 
overhead projector. Believe me the money 
is there. If you can show the need for the 
program the money will come. The computer- 
use program cuts across the whole spectrum 
of studies in the subject area classrooms. 

The school district can afford to spend 
one-fourth of one per cent of its total 
operating budget for computer education 
and the program to use the computer as a 
tool in the subject area classroom. 

What a Microprocessor system can do . 

I was watching a program called NOODLE on 
a PET computer today. Fascinating. The 
little dot goes chasing around on the 
screen leaving a line and little rectangles 
behind it. With the proper persuasion I 
suppose the little dot could be taught to 
make graphs or maybe write one's name. 



225 



BOX 1579, PALO ALTO CA 94302 



The computer, keyboard, CRT and a box to 
hold it all together costs only $800 with 
the additional memory option. A terminal 
usually cost more than that, 

I was going to try to define a micro- 
computer system and then I could talk 
about available software. But the system 
cannot do anything without 



Expectation Rises With Product Improvement 

There was a time when I was satisfied with 
a teleprinter throbbing away at 10 char- 
acters per second to slowly and noisily 
print out the results of my program. No more, 
I expect my printer terminal to print at 
least 30 characters per second and do it 
quietly. 



At one time I questioned the value of a CRT 

Zl^^z^-^^ ,.„*.*„ which leaves no written record but which is 

thinking first about the Huntington t x liked the 

simulations. The Huntington_I and Huntington ^IL?^ of ?hat printed 



Avai lable software . For software I was 



II simulations were written in primative 
BASIC by groups of knowledgable teachers for 
use in subject area studies. 

Each program is not very large. Most of 
these simulations run in very little memory 
The Huntington Programs are available from 
Digital Equipment Corporation. The 
Huntington I programs are available in 
listing form. The Huntington II programs 
are available on punched paper tape and 
come with three booklets, one each for the 
teacher, the student, and for additional 
resources. 

The various computer journals have 
published a vast amount of computer soft- 
ware. Several computer companies have 
established user groups which maintain a 
library of programs available to members for 
the cost of reproducing the program. There 
is at least one private venture that is 
attempting to provide software to the user 
for a price, pay royalities to authors and 
make a profit. The hobby community 
exchanges programs so freely it may come- as 
a surprise that someone would sell programs. 
The big companies have been selling software 
for quite a while. If you purchase a mini- 
computer you will find it won't do much 
until you feed it several thousand dollars 
worth of software. 

Many books are available with program 
listings from simple games to General 
Ledger. 

There exists a vast reserv oir of Computer 
software and computer knowledge relating to 
computer education in printed form as a 
result of several projects in computer 
education that have been undertaken on large 
time-sharing computers. 

Many of the computer programs thus devel- 
oped are available and can be executed on a 
microcomputer system. There is very little 
that a huge time-sharing computer can do 
that cannot be done on a microcomputer 
1 system. Those things that cannot be done on 
I a micro I didn't want to do anyway. 



security of that printed record to carry 
away with me. 

My students do not have this hangup. They 
make a printed record when handing xn 
assignments. More and more program output 
goes to the CRT in a form not amenable to 
character oriented printed output. So far 
I have insisted on a printer with each 
system so that output can be assigned to 
either the CRT or the printer. 

'What are the pieces that make up a minimum 
micro computer system? I suppose it would 
be good to have a check list of things we 
expect to have in a minimum system. When we 
purchase a system we will at least know if 
we do not have some of the items on the list. 

Everyone is not going to come up with the 
same list of expectations. It is easy to 
find microcomputer systems that do not have 
everything on the list. 

Minimum microcomputer sys tem for Computer 
Use in Education 

CPU board, name your favorite processor 

32K memory 

25-30 amp power supply 

extra slots for expansion 

CRT with ability to display memory 

locations, upper/lower case characters 
Matric printer terminal (keyboard, 30 cps) 

upper/lower case, adjustable paper size 
Extended BASIC 12-16K 
Operating system 

Assembler . 

Output may be directed to CRT or printer 

from within the BASIC language program 
Cassette storage system 



Such a system is available for a 
thousand dollars. 



few 



Perhaps your list is different. No matter. 
The important thing is that you understand 
the limitations of the system you are 
thinking about purchasing. 



WEST COAST COMPUTER FAIRE 



226 



BOX 1579, PALO ALTO CA 94302 



Additional Options to expand the 
Minimum Microcomputer system for 
Computer Use in Education 



CRT with graphics capability 
24 or 48 lines of 80 characters 
Color CRT with graphics and plotting 
Matric printer with graphics and plotting 

bidirectional printing 

move paper forward and backward 

lower case descenders 
Letter quality printer/terminal 
Dual 8" floppy disk system with 

Extended disk BASIC with read/write 

files, chaining 
Paper tape I/O for use in transferring 

programs from one system to another and 

to read punched paper tape prepared off- 
line. 
Matrix printer/terminal with programmable 

character set for use in applications such 

as foreign language classes* 

More than one system, compatible with each 
other. Computer programs are written and 
developed on the development system and then 
transferred by cassette to the portable 
terminals that can be taken to any class- 
room. 

First Things First 

There are several thing you will have to do 
first before your school can make use of 
microcomputer systems in education. 

First you must have a computer to run. 

First you must be a programmer. 

First you must want to be a programmer. 

First you must be willing to put in lots and 

lots of extra hours at school and at home. 

First you must decide what kind of programs 

you want to run. 

First you must decide if you want an 

expandable or a closed system. 

First you must consider paper tape systems 

cassette systems, floppy disk systems, 

hard copy or CRT. 

First you must convince the administration 
of the need to use computers in education. 
That is where we were a while ago. The 
principal had just asked you to write a 
proposal to use microcomputers in the 
educational process. So first you write 
the proposal. 

One outline commonly used in proposals is: 
-Statement of the problem 
-The Proposal 

Curriculum changes 

Effects on students 

goals of the proposal 

teacher training 
-Justification 
- costs, and timeline for implementation 



Goals 

Lets take some of the' problem statements 
and change them into goals to write into 
the proposal. 

The school district will provide 
one computer terminal for each- 

- 200 elementary students grades 1-6 

- 100 students in junior high grades 7-8 

- 50 students in senior high grades 9-12. 

The school district will- 

-provide the opportunity for teachers to 
take classes in computer uses in education 
for college credit. 

-encourage teachers to take these classes. 

-provide additional support in the form of 
books and magazines for the library. 

-direct the principals to procede forthwith 
to implement computer use in educationally 
sound ways. 

-recognize that every student has the right 
to be educated in Computer Literacy. 

-recognize that it is the obligation of the 
school district to provide the opportunity 
to the student to become computer literate 
at a level commensurate with his/her 
overall level of education. 

-thoughtfully consider that the school may 
be cheating those students who need 
computer literacy/programming to become 
effective citizens or college students. 

-admit that teaching using computers should 
occur whenever computers are an appropriate 
and educationally sound aid in the overall 
instructional process. 

Value to the Student 

Let us consider some of these same concepts 
in terms of those values and advantages 
that accrue to the student. 

The student is able to- 

-use applicable and available technology 
in acquiring an education. 

-investigate topics in his classes by using 
simulations that would not otherwise be 
possible because of 

time (heredity experiments in biology) 
danger to the student (heat, nuclear) 
mathematical drudgery (decimals). 

-become computer literate to suit the 
student's own prupose whether it be taking 
an elementary class about computers, or 
an advanced computer programming class. 

-use problem solving techniques by 
using prepared programs, or by 
writing original programs. 



WEST COAST COMPUTER FAIRE 



227 



BOX 1579, PALO ALTO CA 94302 



Value to the Student , cont. 

The student is able to- 

-learn how to program a computer in several 
languages* (Some of my students speak four 
dialects of BASIC, FOCAL, FORTRAN and two 
assembler languages.) 

-consider computer programming 
as a vocation 
as a recreational interest. 

-satisfy existing and/or proposed college 
entrance requirements. 

-have the experience of actually writing 
useful programs to be used in the education 
of other students. 

-do system programming. (My students have 
revised the operating system for several 
reasons by using machine language patches. 
They have written their own device handlers 
and disassemblers and are working on an 
operating system. 

The teachers of science, social studies, 
math and business will have the opportunity 
to use the computer to run prepared 
simulations in their classrooms. 

As a result 

-students will have the opportunity to run 
simulations, tutorials, and drill and 
practice programs relating to class work, 
either as an outside class assignment or 
just because they want to. 

-students will have the opportunity to play 
games on the computer. It is painful to 
some teachers to see students playing games 
on the computer but games represent problem 
solving and strategy in perhaps a different 
context. Many games reflect a learning 
situation. Sometimes there is an effort to 
disguise drill and practice as a game. 

Playing games very often leads the student 
into computer programming because the 
student wants to design his own game. 
Programming a computer to play a game is in 
itself, problem solving. 

Make a 5-year plan 



Realize at the beginning that next year you 
will have to make a new 5-year plan. 

Still, it is essential to plan where the 
program is going, or at least the desirable 
direction for it to go. 

Realistic goals change a great deal 
depending on available equipment, both 
hardware and software. 

I hope you will pardon some examples from 
my own situation to illustrate the poiM. 



In 197^ the computer at North was a PDP8I 
with *tK of memory. We had BASIC with 10 
or 12 statements and a user space of about 
1500 characters. We also had FOCAL which is 
a much better language. I have some great 
student programs written in FOCAL. There 
are a number of games. The most ambitious 
program is one that will solve 9 
simultaneous linear equations in 9 unknowns. 
We did not do much in the way of program 
documentation. 

The first computer I programmed was an 
early IBM monster that required a suite of 
airconditioned rooms. In 1957 we 
p rogrammed in machine language and 
optimized the program by strategic placement 
of variables in storage locations on the *fK 
drum memory. I was proud of my program 
that successfully added two numbers. 

With this kind of equipment goals may be 
limited. 

I still teach my Computer Literacy classes 
to use machine language to add and multiply 
two numbers, but only to demonstrate how 
the computer works. 

In September, 197^* my 5-„ r ear plan was to 
teach computer programming on the PDP8l in 
machine language and FOCAL, and to teach 
time-sharing BASIC using a teletype connect- 
ed to Oregon State University. The 
addition of a highspeed paper tape reader 
made it reasonable to use the assembler on 
the PDP8I. 

In February, 1975. I ordered an Altair 
computer from 'KITS" "for" my personal use. 
The world was about to come unglued. 

In September, 197^» I had no reason to hope 
or even expect to hope that I would be able 
to do anything useful in computer 
programming classes. 

The time-sharing Teletype was connected by 
leased long-distance telephone line and was 
costing a large amount of money. There was 
no educational program library on the time- 
sharing computer, although there was a large 
technical mathematics library. This was the 
state of the art at that time. 

In my summer school classes I heard about 
marvelous concepts like PLATO and 
HUNTINGTON simulations. I think I remember 
saying, with some bitterness, "What good 
is all this going to do me?" 

I ran many decks of cards through the IBM 
360 on Free WATFIV. FORTRAN on cards and 
the slow turn-around-time really did not 
excite me very much. 



WEST COAST COMPUTER FAIRE 



228 



BOX 1579, PALO ALTO CA 94302 



Expectation rises with better equipment 

So in September, 197^, I really had low 
expectations. I did have a $5000 per year 
budget for the time-sharing terminal. 
When Digital Equipment Corporation 
announced the CLASSIC in December, 197*t, 
I was ready. The time-sharing was 
cancelled and the money thus saved was 
used to purchase the CLASSIC on a 5-year 
lease-purchase plan. 

The Digital Equipment Corporation's 
CLASSIC computer has a PDP8A CPU, l6K of 
12-bit core memory (effectively 32K char- 
acters), dual floppy disk (256,000 char- 
acters per disk) and a keyboard CRT (12 
lines of 72 characters). We have since 
added a print-only DECwriter for hard copy 
output, and a Teletype ASR33 for punched 
paper tape I/O to the system. We also 
purchased software including OS/8, CLASSIC 
BASIC, FORTRAN IV, and PAL8 assembler. 
One of the students wrote an 8K FOCAL 
language processor for the CLASSIC. 

.e have all of the Huntington II simulations 
and "101 BASIC Games" on disk. In inkprint 
we have all of the Huntington I programs 
and several publications of application 
software. 

All this is costing us less than $250 
per month. 

Now the five-year plan has to be 
completely re-written. Expectation has 
gone up because of available hardware. 
In the meantime we have added 2 ASR33 
Teletypes for off-line punched paper tape 
preparation of programs. 

Our situation has changed completely. 
We now have a large software resource 
but only 2 terminals. Students are using 
the CLASSIC and the 8l all day long. 
After a brief time of playing games and 
running the Huntington simulations these 
students are interested only in creating 
their own programming masterpieces. 
The goal of using the computer in subject 
area classes is not being implemented 
because the computers are already being 
used fulltime for a worthy purpose. 

For part of the spring term we were able 
to rent a timesharing terminal connected 
to the HP2000F at Willamette University 
in Salem. This was used briefly in junior 
high classes and in biology classes. Money 
came from a grant from Oregon Mathematics 
Education Council (OMSC) which was in turn 
funded by the National Science Foundation. 
This experience proved to me the validity 
of the concept of computer use in subject 
area classrooms. 



In November 1976 we ordered a SOL-20 with 
dual floppy disks. This purchase was made 
possible by a matching grant from OMEC. 
When the unit had not been delivered by 
April, 1977, the order was cancelled and a 
microcomputer system was designed from on- 
the-shelf items at the local Byte Shop. 
This system was delivered in two weeks and 
was used the last 5 weeks of school. 
Several subject-area demonstrations were 
made during the last weeks of school. 

I am telling you about the history of our 
local situation to provide an example of 
how expectations change with the kind of 
equipment available to be used. 

In September, 1977, our computer #3 
consisted of an IMSAI mainframe, Cromenco 
Z-80 CPU board, 2kK. memory, VDM-1, Cutts 
Cassette interface. Byte Saver board with 
modified TDL system Monitor, TDL BASIC, 
CRT Monitor, DECwriter LA36, ASR33 Teletype 
and a cassette player. This is a powerful 
and versatile system. Either keyboard can 
be used as the console (not both). Output 
may be directed to either the CRT monitor 
or the printer associated with the keyboard 
being used, under software control in 
several ways: as a monitor assignment, 
by the 'switch* command in BASIC, or by 
BASIC statements of PRINT and LPRINT. 
Programs may be input or saved on paper tape 
or cassette. This system cost $3800, plus 
the Teletype purchased earlier, plus the 
DECwriter. Many computer stores now have 
financing available. You should be able to 
purchase such a system for $186 per month 
for 5 years. 

Let's review: 

In September, 197^, available equipment 
included Computer #1, a PDPSl (4K) with an 
ASR33 Teletype, and a timesharing terminal 
connected by telephone to a university *t0 
miles away. 

By September, 1975, the timesharing had been 
dropped and a higspeed paper tape reader 
added to the PDPSl. A CLASSIC had been 
ordered but was not delivered until 
Christmas. 

By September, 1976, additions included 
Computer #2, the CLASSIC with DECwriter, 
CRT, ASR33, BASIC, FORTRAN IV, FOCAL, 0S/8 
and large amounts of program material on 
disk or printed. 

By September, 1977, we had added computer 
#3, the IMSAI-TDL system described above. 

I hope you don't think that is the end of 
the story. It isn't. We need more 
terminals and more options for a growing 
program. 



WEST COAST COMPUTER FAIRE 



229 



BOX 1579, PALO ALTO CA 94302 



If You Want Equipment, ask for it 



I am happy to report that my school has 
just approved the immediate purchase of 2 
new computer systems with 19-inch color 
CRTs, color graphics and plotting capability 
One of these systems will be available at 
all times for subject-area classroom use. 
The other system will be used for program 
development most of the time. 

I think I have been able to get this equip- 
ment because I have kept up a continual 
barrage of computer proposals, letters, 
and copies of articles from computer 
magazines to teachers, the administration 
and to the school board. 

I have had a lot of help from OMEC, from 
people I met at the University of Oregon, 
from Willamette University in Salem, and 
from students and faculty at North. I 
subscribe to many of the computer magazines 
and I put in a lot of hours. I would like 
to think we have the beginnings of a good 
computer education program at North Salem 
High School. 

I am not trying to get my own back patted. 

My message is just this: 

-the software is available 

-the hardware is available, 

-you can do it, too. 

Why are you just sitting there? 

If you want equipment, ask for it. 
Ask again, and again. 

Design a program for your school that looks 
to the .future. What is. desirable now? 
—next year? —in five years? 



Plan classes in Computer Literacy, 
Beginning Computer Programming, 
Advanced Computer Programming. 
U se BASIC, Assembler, FORTRAN, PASCAL. 



Plan for computer usage in the subject area 
classroom. Read those magazines, write 
another proposal. Attend that conference, 
write another proposal. Visit another 
school, write another proposal, and keep 
hammering away. 

North Salem High School cannot compete with 
Lawrence Hall of Science the first year, 
but if we go back into history far enough 
we will find there was a day when Lawrence 
Hall got its first computer terminal. 
Lawrence Hall just got a headstart. 



I believe that the computer should be used 
as a teaching tool in sub.ject a rea class- 
rooms . A class of advanced programming 
students can be a great help in implementing 
this program. We are starting with the 
Huntington simulation programs and re- 
writing them with improvements that are 
possible with a better BASIC. We will 
answer 'y es ' or ' no ' instead of '1' or '2'. 
Now we will modify the programs to take 
advantage of the possibilities of a CRT 
that can display kS lines of characters in 
any color and that has graphics and plotting 
capabilities. 

We may get programs from books and/or 
magazines but most of the time we just 
write our own. 

Write another proposal, Ask the librarian 
to order computer books and magazines. 
Answer the ads in the computer magazines by 
using the bingo cards. 

You do not have to have a PDP-10 or an 
HP 2000 f or an IBM 360 to run worthwhile 
programs. Many BASIC programs will run on 
a stand-alone microcomputer that can be 
taken to any classroom. 

You can do it if you try. 



WEST COAST COMPUTER FAIRE 



230 



BOX 1579, PALO ALTO CA 94302 



San Jose Computer Faire, Jaquiss, Computer U6e in education HANDOUT 
AN IDEAL COMPUTER SYSTEM FROM THE USER STANDPOINT 

1* Is easy for the user to use; teacher, novice or programmer. 

2. Provides for a number of programming languages, 

3. Permits the user to access a large variety of on-line canned programs 
for simulation, problem solving or computer literacy. 

k. Gives the user a choice of using CRT or teleprinter terminal. Output 
can be directed to either the CRT or printer from within the (BASIC) 
program while it is being RUN. 

5. Is flexible so that terminals may be plugged in in any classroom for 
use in the subject area classroom. Allows the use of a large 25-inch 
CRT monitor, printing terminal, plotter or graphics terminal, or is 

a portable system that can be moved to the desired classroom. 

6. Offers the user the options of graphics, a plotter, color CRT, line 
printer, CRT, or printing terminal either matrix or letter quality. 

7. Allows the user to have his own user number and secret password, and 
to have protected files in hi» own private library, or else his own 
floppy disks. 

8. Has sufficient memory so that each user has adequate user space. 

9. Provides for easy transportation of programs to and from the system. 
Locally produced programs can be provided to other computer centers. 
Software secured from outside sources can be put onto the system via 
magtape, punched paper tape, cassette tape, floppy disk. In the case 
of several micro systems programs should be easily moved from one 
microcomputer to another. 

10. Is expandable. Either upward compatible as in the PDP-11 series or 
the microcomputer system has extra slots available installed. 

11. Provides the user a method to save his programs outside the computer 
(punched paper tape, tape cassette, floppy disk). 

12. Provides system backup in case the system crashes. Systems do crash. 
In some systems the entire disk is copied onto mag tape at regular 
intervals, tfith a floppy disk system the user can make his own 
back-up disks. 

I forsee intelligent terminal networks coming to the aid of microcomputer 
systems with each intelligent terminal being able to access a large 
intelligent disk data base. The intelligent terminal will go to the disk 
to get whichever language processor is desired and copy it into memory. 
Then the intelligent terminal will access the master disk again to load 
(or save) programs. The intelligent terminal will be able to execute the 
desired program in the selected language. A user will be able to select 
a CRT terminal or a printing terminal from which he can control a high 
speed line printer, reader punch, cassette tape or floppy disk. Schools 
will have a jack in every room so that any terminal may be plugged in. 
The system will provide color CRTs with graphics and plotting and a color 
camera copier. There will be a system plotter and a line printer capable 
of 200 dots per inch resolution. 

I would like to teach my microcomputer to groan when the student makes a 
mistake and maybe play "On North High" when the program runs. 



WEST COAST COMPUTER FAIRE 231 BOX 1579, PALO ALTO CA 94302 



COPYRIGHT 1978 Don Black 



THE COMPUTER IN THE SCHOOLROOM 

DON BLACK, Formerly Director of Computer Activities, the Learning Farm 

now with 
INTEGRATED COMPUTER SYSTEMS, INC. 

3304 Pico Boulevard 

Santa Monica, California 90405 

(213) 450-2060 



The Teachers Requirements for an Educational 
System 

This presentation may be functionally divided 
into two sections: Hardware and Software. 

Hardware 

Packaging . The most important part of 
the system is the student, so I will start 
with what the student sees first, the Package. 

It is well to have the system in one or 
two self contained modules. A jumble of wires 
and boxes can be somewhat intimidating. A 
clean, simple unimposing package, without too 
many lights and buttons on the other hand, 
invites exploration. Sophisticated Package . 

CRT ys Har dc opy . CRT's are nice, quiet, 
fast, but they cannot provide Hardcopy. 
After I have spent an hour being creative, I 
would like to have something to show for it. 
If the presentation device provides Hardcopy, 

-The student can take it home. 

-The student and teacher have a record of 
the student's progress (we compile a portfolio 
of student progress in the form of this 
annotated output) . 

-The author has some feedback on course- 
ware effectiveness. 

If I have a choice between a CRT and a TTY, 
I choose the TTY for the reasons outlined 
above . Hardcopy . 

Graphics . The only reason I would choose 
a CRT over a Hardcopy device is for a graphic 
capability coupled with a medium speed 
data rate. The graphics need not be elaborate, 
just easy to use. The graphic capability need 
be no more sophisticated than drawing a point 
(or i/4" square) at x,y. For the author to 



to be able to specify a vertical or horizontal 
line (as with The Apple II system) would be 
better, but we are venturing into software, or 
at least firmware. 

Yet there is still very little that can be 
done with a TTY. This final decision may very 
well be a matter of taste. I still prefer the 
lowest common denominator, the TTY. Graphics 
is Fun, But Unnecessary . 

Memory . All the courseware I have written 
has resided happily in 6K bytes. To this must 
be added the software and firmware. Lets give 
software 4K (the author language itself) and 
firmware 2K (monitor, I/O, integer multiply /di- 
vide, and utilities) so our system requires 
10K RAM and 2K ROM. If we went to a nice round 
number like 12K, we would have room for some fun 
added capabilities. 10 - 12K RAM and 2K ROM . 



Storage . Our system will require a form of 
storage that will allow the student to painlessly 
load a course without any training. I imagine a 
cassette tape with a big green 'LOAD' button. 
Punched Paper Tape is too slow and troublesome. 
It requires both patience and understanding, 
somewhat limited commodities. A floppy disk 
might meet our requirements, but a cassette tape 
could do so also, and it is still cheaper and 
more familiar. We all look forward to the day 
of the bubble memory cartridge, which could also 
allow virtual storage capabilities, yet the 
cassette is cost-effective today. Cassette 
(Until Bubble Memory is Cost-Ef f ective ) . 

A cassette would allow easy transportability 
of courseware, and with cassette standardization, 
inter-changeability. 

So, out of this discussion comes: 

1) Sophisticated Package 

2) Hardcopy 



WEST COAST COMPUTER FAIRE 



232 



BOX 1579, PALO ALTO CA 94302 



3) Graphics is a Luxury 

4) 10 - 12K RAM with 2K ROM 

5) Cassette Storage 

More on Cassettes . We can get by on the 
audio cassette toys, but in increasing orders 
of sophistication, allow the author to: 

a) turn the cassette on and off program- 
atically. 

b) select read or write mode (say play or 
record) 

c) search a tape for a specific record. 

d) select a high speed search mode (read) . 

e) play back a pre-recorded message (audio) 

At level 'd' we have the capability of 
virtual storage, if the response time on the 
cassette transport is such that it will allow 
the author 1/4 - 1/2 second response time for 
student interaction. Once we reach the 'e' 
stage, we shall truly have an audio-video de- 
vice. 
Software 

I initially prefaced my remarks by sayinp; 
that the student is the most important element 
of the system. Yet, in this field we are all 
students. The obvious corollary is the the 
User is the most important element of the 
system. 



The first requirement of our software is 
a clear, simple and direct syntax. There 
should be no need to re-educate a specialist. 
The function of the language elements should 
be clear. The variable names should be self- 
documenting (i.e. multi-character). The 
syntax should be easy to parse by a micro- 
computer based system. 

Let me introduce the -PILOT language at 
this point. This 'author' language, as 
developed by Dr. John Starkweather, meets our 
initial requirements admirably. I have taught 
9 year old children, with no computer experience 
how to program in less than an hour. It is no 
exaggeration to say that one may become profi- 
cient in the language within a few hours. 

I have selected PILOT for its unique 
adaptability to microprocessor implementations. 
There is a brief description of the language at 
the end of this paper. 



user's group THE PILOT INFORMATION EXCHANGE, 
Box 354, Palo Alto, California. Let me plug 
my interpretor system written in FORTRAN and 
funning on Honeywell 6600, Univac 70/7 and 
Burroughs 6700 systems. This is a program 
product from the EDUTECH Project, Box 1023, 
Encinitas, California 92024. 

The PILOT syntax is as follows: 

[label] [operation code] [condition] : [object] 

The operation code for the core language is 
one character: 

'T' - Type, 'A' - Answer, 'M' - Match, 

'J' - Jump, 'U' - Use, 'E' - End, 'C' - Compute, 

'R' - Remark. This will come up later. 

Document at ion . The next requirement for any 
software is clear, simple documentation. This 
requirement is also first chronologically. At 
least outline the documentation before you begin 
designing the software. The User requires, no 
matter what her/his level of sophistication, 
a clear concise description of each element of 
the software tool. Be sure your assumptions as 
to the requirements of the user are clear in 
your own mind and be consistent throughout your 
presentation. Except for audiences like this, 
I usually assume a sixth grade reading level, 
that is a high school graduate. 

Include a table of contents, an index, and 
references to other sections of text that bear 
on the subject at hand. 



For example, when I say a description of eact 
element, I mean specify that in an assignment 
statement (or LET or computational) that evalua- 
tion proceeds from left to right and that 
exponentiation is evaluated before multiplicatior 
division, addition or subtraction. But don't 
say it like that. More like this: 



"Arithmetic proceeds from left to right, 
example," 



For 



(and include examples). "X = 5+6-3" "6 is 
added to 5 to give 11, then 3 is subtracted from 
11 to give 8. 8 is then saved is 'X'". But, 
powers of number are computed before multiplica- 
tion or division. Multiplication and division 
are computed before addition or subtraction. 
For example, in "X = 10-2*3" "2 times 3 is 
computed first to give 6. 6 is then subtracted 
from 10 to give 4. 'X' now has the value 4". 



PILOT is available for the INTEL 8080 chip Use illustrations, too. "A picture is 
through the National Library of Medicine for worth..." and so on. 
free (public domain) . There are implementations 
available for most mini and maxi computer systems 
written in BASIC, FORTRAN and even PL/1 through 



WEST COAST COMPUTER FAIRE 



233 



BOX 1579, PALO ALTO CA 94302 



Order Of 


Operation 


Computation 




1 


** Exponentiation 


2 


*,/ Multiplication 


3 


+,- Addition 



(Note that I am assuming the reader understands 
+,-,*,/>** operations.) 

Arithmetic (Assignment or Compute State- 
ment) . Integer arithmetic will serve our needs 
just fine. In fact, floating point arithmetic 
will create some problems due to rounding error 
that the student and teacher will not be pre- 
pared for at this stage (infinite loops due to 
improper testing) . 

There are, of course, many applications 
where floating point is necessary. An optiumum 
implementation would be a combination of float- 
ing point and integer (or fixed point) arithme- 
tic as in Fortran or PL/1. 

The arithmetic operations necessary are: 
addition, subtraction, multiplication and 
division. Exponentiation is good, but not 
really necessary. There are algorithms 
available for performing higher level functions 
given a set of lower level primatives: multi- 
plication from addition, exponentiation from 
multiplication, the 'n'th root given the 
arithmetic primatives. (Note - Include some 
capability for testing for a non-numeric input 
rather than bombing out a program) . 

String Manipulation . This capability is 
a necessity for any teaching algorithm more 
sophisticated than arithmetic or multiple 
guess (choice) . 

The primatives necessary are: 

1) Input a string (assign to a variable) 
lb) Assign a string (" ") 

2) Index (where in string 'B' does string 
'A' occur, if it does?) 

3) Substring (Extract from string 'A' 
a substring beginning with location 'B' and 
ending with location 'C'.) 

4) Concatenate (Form a third string by 

I placing string 'B 5 at the end of string 'A'). 
5) Output a string 



WEST COAST COMPUTER FAIRE 



6) Conversion (Convert string 'A' to its 
numerical equivalent, or convert a number to 
its character representation) . 

7) A 'replace' or substitute operation 
would be nice, but it may be woven from the 
above primatives. 

Relational Operations 

1) Equal or Not-Equal and Greater Than 
Zero 

2) Greater Than, Less Than, Greater Than 
or Equal To, Less Than or Equal To, Equal To, 
Not Equal To. 

3) For strings, a byte by byte compare 
using the EBCDIC or ASCII colating sequence up 
to the length of the shorter string. If strings 
are equal, then the longest string has a greater 
value . 

4) A value of 1 for TRUE, or a value of 
for FALSE. 

Logical Operations . Although these prima- 
tives are not necessary, they are handy. If 
you include the above two capabilities, these 
might as well be included also. This capability 
also lends itself well to structured programming 

1) Logical Or 

2) Logical And 

3) Logical Not (Unary) 

4) Logical Exclusive Or (While not a 
primative, it is useful). 

It might be interesting to use more contem- 
porary logical primaries such as: 

1) NAND (Not-And) 

2) NOR (Not-Or) 

3) Invert (Logical Not) 

For evaluation purposes, a value greater 
than zero is TRUE, while a value less than or 
equal to zero is FALSE. A Result evaluated to 
TRUE is set to one, while a result evaluated to 
FALSE is set to zero (state this in your docu- 
mentation) . 

Language Elements . The basic language 
functions that a teacher's language must perform 



- Present Information 
Get Response 

- Evaluate (Compare response to expected 
result. ) 

- Decision (Branch or conditional executioi 
based on result of analysis.) 

234 BOX 1 579, PALO ALTO CA 94302 



Present Information . We need an output 
instruction that allows the author to display 
text, values of variables, and primative 
graphics if available (clear screen, move cursor), 
An added capability would be to evaluate and 
display the result of variable manipulations. 

The PILOT language 'T: n statement meets most 
of these requirements. 

T:WELL, $NAME, YOU HAVE #CA OUT OF #TOTAL+. 

GET Response . The teacher needs to input 
the student response for evaluation purposes. 
The language requires the capability to identify 
the student response and save it for later evalu- 
ation. It is therefore necessary to assign 
input to variables. We require both integer 
variable and string variable input assignments. 

The PILOT 'A:* input statement is our 
example : 

A:#RESULT Would assign a numeric response 
(integer) to the variable 
#RESULT. 

A:$NAME Would assign the input string 
to $NAME. 

It is also necessary that a non-numeric 
response, when a numeric response is expected, 
does not 'bomb-out' the program. Allow the 
programmer the ability to test for a valid 
number. There is a conditional in PILOT that 
is set or reset if the last inputted string 
can or cannot be evaluated as an integer, 
respectively. 

*AGAIN A:#ANSWER 

T B: THAT'S NOT A NUMBER, TRY AGAIN. 
J B:*AGAIN 

(B is set if the number is Bad, G is set if 
the number is Good. The second and third lines 
of PILOT code are executed only if the 'B* con- 
dition is set, i.e. last inputted string is not 
numeric.) 

Evaluate . The simplest form of evaluation, 
and the most popular, is to compare a student 
response with an expected response. A straight 
forward character by character compare (match) 
is the obvious solution: Does the student 
input contain the character string? The 
PILOT implementation is: 

M:string 1, string 2,..., string n 

If the last inputted string contains the 
characters 'string 1* or the characters 
'string 2* anywhere in its text, then the match 
is successful. Success is indicated by setting 



WEST COAST COMPUTER FAIRE 



235 



a condition flag "YES" for success or "NO" 
for not a successful match. This condition 
can be used in the same manner as 'B' men- 
tioned earlier. For example: 

T: WHAT IS THE NAME OF THE PILOT 
LANGUAGE USER'S GROUP? 

A: 

M: PILOT INFORMATION EXCHANGE, P. I.E. , 
PIE 

TY: RIGHT.' 

If the characters string PILOT INFORMA- 
TION EXCHANGE or P. I.E. OR PIE occured in 
the student response then the student would 
get the reinforcing message "RIGHT."'. For 
example, if the student responded I LIKE PIE. 
The system would respond RIGHT! 

We also require the capability to manip- 
ulate inputted strings and numbers. For 
example, should an English teacher wish to 
use a transformational grammar approach in an 
English course, it will be necessary to 
evaluate an input string for syntactic vali- 
dity. 

T: WRITE A SENTENCE USING THE WORDS 

T: JUMPED, DOG, CAT, THE, OVER, HOUSE, 
FROM, A, BROWN, BLACK 

A: $ ANSWER 

Rather than test for all syntactically 
valid responses, we would like to substitute 
the proper part of speech for each word and 
evaluate the grammatical elements. Let us 
assume a REPLACE instruction: 

REP: pattern, string, object 

where all occurances of pattern in object are 
replaced by string: 

REP: JUMPED, VERB, $ANSWER 
REP: DOG, NOUN, $ANSWER 
REP : CAT , NOUN , $ANSWER 



REP : BLACK, AD JECTIVE , $ANSWER 

REP: ARTICLE ADJECTIVE NOUN,N-PHRASE, 
$ ANSWER 

REP: ADJECTIVE NOUN, N-PHRASE,$ ANSWER 



REP: SUBJECT PREDICATE , SENTENCE, $ANSWERJ 
T ($ANSWER= ,, SENTENCE") : RIGHT! 

BOX 1579, PALO ALTO CA 94302 



As evaluation proceeds, the teacher has 
the option of displaying the parts-of-speech 
and evaluated grammatical elements for the 
sentence: 

WRITE A SENTENCE USING THE WORDS: 
JUMPED, DOG, CAT, THE, OVER, HOUSE, FROM, 
A, BROWN, BLACK 

the black house jumped over the brown 

art adj noun verb prep art adj 

n-phrase verb prep phrase 

dog front the cat 
noun prep art noun 
prep-phrase 

subject predicate 

sentence. 

RIGHT! 

Similar evaluation may occur with arith- 
metic and math word problems. 

Another implementation of this capability 
is in an arithmetic assignment statement with 
string operations as with BASIC or PL/1. That 
is the method of implementation used in our 
PILOT Interpretor/Editor system (PI/ES) , 

Using the index, extract substring, and 
contatenation operations, I have written a 
subroutine to replace a given word with its 
part-of-speech, or a grammatical element with 
its term. 

Referring back to our requirement for a 
simple direct syntax, I don't think our PIES 

system meets this requirement in the area of 
string manipulation, although it is the best 
implementation I have seen. Something on 
the order of the REP instruction seems more 
straight forward. As they say in the education 
industry, I will leave this problem as an exer- 
cise for the student. Let me know if you 
solve it. 

Decision . The fourth elementary require- 
ment is the ability to make a decision based 
on our previous evaluation. The buzz word 
here is "conditional execution". Most language 
implementations have a conditional branch 
instruction: 



The syntax of this capability is far 
reaching, perhaps even devious. The syntax of 
this implementation defines the structure of 
the programs that are written with the language. 

Those of us who are teaching the art of 
computer programming look upon the BASIC syntax 
with horror. (Ever try to debug somebody elses 
4000 statement BASIC program?) A syntax such 
as PL/1 or PL/M however, is a joy. The 
IF A THEN DO ; . . . END ; sequence lends itself 
exquisitely to structured programming. 

Although PILOT is not a structured language, 
it has a syntax that is unusual and easy to 
explain: Every statement may be conditionally 
executed. 

The condition may be in the form of a flag 
that is set by a previous statement: G/B set 
by the last A:; or Y/N set by the last M: , 
or the condition may be in the form of an 
arithmetic evaluation: 

J (A*B=5) :*L00P 

The language may be structured by adding 
another instruction that will group statements 
into a block. This may be considered grammati- 
cally as a pair of parenthesis: 

BLOCK: 

T: THIS SECTION OF THE LESSON IS ON 
SENTENCES. 



IF A THEN GO TO 1000 
IF (I) 100, 200, 300 

J J. '. "ljABEu 



for BASIC 
for FORTRAN 
for PILOT 



T: THAT'S GREAT. LET'S GO ON NOW. 
ENDB: 

The spelling is unimportant, it could be 
called PROBLEM, or BEGIN, or SECTION, or GROUP, 
etc. The critical function is the conditional 
execution of the entire block. If the condition 
associated with the BLOCK statement is false, 
then execution of the entire block should be 
skipped (down to corresponding ENDB statement) . 

BLOCK (SECTI0N=4): 

T: THIS SECTION (NUMBER FOUR) IS ON VERBS 



Let's talk about subroutines. A subroutine 
reference is a branch or jump to another location 
in the program code and a return to the next 
location following the subroutine reference. 
PILOT calls this a U: for Use. The subroutine 
performs a programmer defined function that is 
used frequently by more than one section of the 



WEST COAST COMPUTER FAIRE 



236 



BOX 1579, PALO ALTO CA 94302 



program. While both PILOT and BASIC include 
this capability, there is one shortcoming 
shared by both languages: There is no direct 
way to send variables to the routines. 
Notice the differences: 

FORTRAN and PLI/1 

CALL SUB (argl,arg2, "STRING", arg4) 
BASIC 

LET Al=argl 

LET A2=arg2 

LET A$="STRING" 

LET A4=arg4 

GOSUB 1000 
PILOT 

C:ARGl=argl 
C:ARG2=arg2 
C:$ARG3="STRING" 
C:ARG4=arg4 
U:*SUB 

I would like to suggest an extension to the 
U: instruction so that it may allow an 
Argument List: 

U : *SUB , argl , arg2 , "STRING" , arg4 

MISCELLANEOUS. Other capabilities that 
have been suggested I will mention in passing: 

BRANCH: #VALUE,*LABEL1,*LABEL2,*LABEL3 
*LABEL4 

Jump to the Nth listed address depending on 
the value of //VALUE. Similar to the FORTRAN 
computed GO TO: 

GO TO (100, 200, 300, 400), JVAL 
or in BASIC: 

IF V=l THEN GO TO 100 
IF V=2 THEN GO TO 200 
etc. 

I would like to propose a select statement 
SEL that would select the Nth element from a 
list: 

SEL:#n, target, elementl,element2,element3. . . 
Usage would be as follows: 

SEL:#random,value,l,2,3,4,5,6,7,8,9,0 



or 



SEL : //SWITCH , *TARGET , *LABEL1 , *LABEL2 
*L00P,*END 

J:*TARGET 



or 



SEL://NUMBER,$RESULT,$STRING1, "RIGHT" 
"GREAT'V'FANTASTIC" 

This statement will allow the BRANCH 
capability and a pseudo dimensioned variabel 
capability. 

External Storage. A File input or output 
capability is limited by the hardware. 
Assuming the lowest common denominator, Audio 
Cassette or PPT, we are allowed to READ. 

So the first capability we wish to im- 
plement is a sequential file READ, i.e. READ 
next record and assign to variable (s). 

This hardware capability also will allow 
us to CHAIN to another teaching program: 

T: YOU HAVE FINISHED WITH THIS LESSON. 
DO YOU WANT TO GO ON? 

A: 

M: YES, OK, SURE, YEP 

CHAIN Y:*LESSON2,argl,arg2, . . . ,argn 

This instruction is a combination Load 
and Run. *LESS0N2 would be located, loaded 
from the tape into memory, and executed using 
the specified argument list. 

With this, instruction, we have the 
capability of n 6K byte modules or chapters 
of lessons. 

A File WRITE instruction would allow the 
author to store the results of student 
performance for later analysis (grading, 
student progress, course effectiveness, 'etc.) . 

READ : %f ilename , $variablel , #variable2 
WRITE : %f ilename , $variablel , #variable2 

A syntax including a filename (^filename) 
will allow upward compatability with systems 
that have more sophisticated I/O devices 
diskette, digital cassette, etc.). We might 
even include a syntax for Indexed files: 

READ : %f ilename * key , $variablel , #var iable2 

where "key" (following the apostrophe (')) is 
an integer from to 255 that refers to the 
Nth record of the specified file %f ilename. 






WEST COAST COMPUTER FAIRE 



237 



BOX 1579, PALO ALTO CA 94302 



Summary 



In summary, our language consists of: 

1) Documentation 

2) Arithmetic Computation 

3) String Manipulation 

4) Logical Operations 

5) Relational Operators 

6) Output to TTY 

7) Input from TTY and assign to variable 

8) Compare (match) student response to 
expected response 

9) Evaluate response 

10) Conditional Execution 

11) Structured Syntax 

12) File READ /WRITE 

13) CHAIN to program using argument list 



If there is an OEM who can meet these hardware/ 
software requirements for less than $1000 please 
let me know, I would like a few. 

APPENDIX 

Pilot La ngua ge Syntax 

[*label] [op-code] [condition] : [object] 

[*label] a 1-19 character unique string, (optional) 

[op-code] a PILOT instruction as follows: 

T Type out to the terminal the string 
contained in [object]. Interpret a 
string prefaced by # as a numeric 
variable. Interpret a string prefaced 
by $ as a string variable, otherwise 
type out the object as is. 

A Accept an Answer from the terminal and 
optionally assign the input to the 
variable contained in [object]. SET/ 
RESET G/B conditions. 

M Match (compare) the last inputted response 
with the string optionally delimited by 
comas (,) in [object]. SET/RESET Y/N 
conditions. 

J Jump to the label contained in [object]. 

U Use [object] as a subroutine (save this 
address for return) . 

E End subroutine (no [object]). Return 
to instruction following last U state- 
ment . 



C Compute, [object] is of the form 
[variable] - [arithmetic expression] 
Evaluate [arithmetic expression] and 
assign result to [variable]. 

R Remark. Internal documentation, 
ignore [object]. 

Multi character [ op-code ]'s are used 
for system dependent or user defined in- 
structions: 

REP [condition] : [pattern] , [new pat- 
tern] and update [old string] when 
finished. 

CHAIN [condition] : %[ program-name ] , 
[argument 1], ..., [argument n] 
Load and execute (with no return) 
[program-name] using argument list 
[argument 1] through [argument n] 
SEL [condition] : [N] , [target] , 
[element 1] , [element 2] , . . . , 
[element n] 

Select the Nth element from the list 
and assign to [target], [condition] 
is of the form: [Y/N] [G/B] 
[ (arithmetic expression) ] 

Y is true if the last M match state- 
ment was successful. N is complement. 

G is true if the last inputted string 
could be evaluated as an integer. 

B is G's complement. 

(arithmetic expression) is evaluated 
as True ± f the result is greater than zero -;■ 
otherwise it is False. 

[type code] [variable name] 

[type code] is: '*' for labels, '#' 
for integers, '$' for string variables. 

[variable name] is 1-19 characters, 
first character a letter. 



WEST COAST COMPUTER FAIRE 



238 



COPYRIGHT 1978 Don Black 

BOX 1579, PALO ALTO CA94302 



SO YOU WANT TO PROGRAM FOR SMALL BUSINESS 



Michael R. Levy 

Jethro 

70 Boston Post Road 

Way! and, MA 01778 



Summary 



The "Hobby" manufacturers are turning more 
and more to the low end small business market in 
order to take advantage of this fast growing 
segment of the computer industry. This has 
created an ever growing need for programmer - 
system analysts, and many hobbiests or "hackers" 
see this as a means to earn money and take 
advantage of their programming skills. This 
paper will attempt to show the fledgling busi- 
ness programmer what he can expect from the 
small businessman, how to write proposals and 
run a business, and how to do small business 
system analysis. 

The serious hobbiest market appears to be 
finite. It is a market somewhat similar to the 
serious ham radio market in that it requires a 
great deal of technical proficiency and 
knowledge and previous experience in order to be 
successful. When the home computer first burst 
on the scene about two years ago, this was a 
natural market on which the new manufacturers 
concentrated. Of late, the realization has 
dawned on many of them that they will have to 
find another area in which to sell if they are 
to survive in a crowded marketplace. 

What Is The Market 



The Small Business Administration says 
that there are 13 million in the country. 
They produce 44% of the jobs and 36% of the GNP 
and form 97% of all U. S. business. The 
definition of a small business by this Small 
Business Administration is complicated and makes 
use of a number of criteria. These may be num- 
ber of employees and dollar volume of the 
business, and whether it is dominant in its 
field of operation. By that definition, a 
company such as American Motors could be 
considered to be a small business. The Table 
A-l presents some interesting figures, and 
Table A-2 is another set. You will note that 
there is little consistency in the numbers or 
definitions, and I would note that while the 
market is large according to all established 
surveys, I suspect it is not as accessible as 
most small manufacturers think. 



Characteristics of a Small Business 

Reams have been written about the 
definition of a small business and its 
characteristics. Its purpose is to produce 
on a timely consistent basis, at a profit, a 
service or product suitable for the intended 
use. It is usually managed and owned by a 
person who is a specialist in some particular 
aspect of a product or service. He or she is 
most usually a clever marketeer, or a 
superior technician or expert in his or her 
chosen field. 

Small business is a place for mature, 
intuitive judgment, not a place for the simple 
execution of a prescribed and defined routine. 
It usually exists to meet a specialized need 
which cannot be met by a larger company. 
Usually it fits into a chink or seam in the 
marketplace where size of the market is consid- 
ered not suitable for a larger company, or 
where the entry into a new market would pose an 
unacceptable threat to an already existing 
profitable large company market. For instance, 
in the computer business IBM is slow to 
introduce new technical developments because to 
do so prematurely would threaten their 
existing rental and lease base. In fact, the 
commercial smaTl business systems producers are 
in the same boat since they are eying some of 
the same markets that the small hobbiest manu- 
facturers are examining. However, the 
existing pricing level is much lower than what 
the commercial small business systems manu- 
facturers are accustomed to. In short, most 
small business companies, computer or non- 
computer are characterized by great flexibility 
and adaptability to rapid change. 

Characteristics of Small Business People 

Given the previous description of a small 
business, it should not be unexpected that a 
particular type of person will tend to 
gravitate towards this type of enterprise. 
They are more than usually independant and 
agressive, they are not very empathetic, and 
they mix aggressive behavior with a sense of 
dissatisfaction with their environment that 



WEST COAST COMPUTER FAIRE 



239 



BOX 1579, PALO ALTO CA 94302 



impels them to change things. Last, but not 
least, despite all of this motion and 
movement they are usually not to careful about 
detail. Their "span of control" is established 
by artful perception, intuition, and detailed 
experience. In a larger business this type of 
control is done by classical financial methods 
and budgets, or by formal analytical procedures. 
A person with this type of personality charac- 
teristics tends to change things rapidly and 
does not tend to think in algorithms. This can 
make a problem for a programmer who wants to 
work with small business people. 

On the other hand, the programmer - systems 
analyst tends to be the type of person who, 
while independent, is not usually aggressive. 
He does not have too much empathy and is 
usually satisfied with his environment. If he 
is to be a good programmer, he must have a 
high degree of attention to detail. If you com- 
pare these traits with the characteristics of 
the entrepreneur, you will find that the only 
thing they have in common is a lack of empathy 
and a failure to communicate. This may seem an 
over-simplification, but my many years of 
experience has shown me that there is this lack 
of similarity in outlook and objectives which 
cause many problems between the business man and 
the programmer. 

How Do You Then Merge The Two Interests 



First of all, the business man will 
appreciate your services more if you run them 
in a businesslike manner. I find reams of 
information that are written about programming 
skills, structured and nonstructured, and 
which cover the myraitf other factors that make 
up the tool kit of the proficient programmer 
and systems analyst. But nowhere do I find a 
rationally written instruction which tells anyone 
what they should reasonably charge. The basic 
rationale is important. How the individual 
applies it should suit his or her particular 
circumstances. What I shall present will equally 
suit the fledgling programmer - analyst as well 
as the small systems house or the full time two 
or three man partnership that programs for small 
business people. 

You start with 365 days a year and 
immediately you subtract 104 of those for the 
52 weekends. Most people calculate 10 paid 
holidays, or in any case the legal ones when 
nobody else is working, and add another 10 to 
14 days for vacation. This is a rough calculation 
but you are now down to about 220 saleable days 
per year. If one multiplies this number by the 
standard 8 hours per 'day, you get 1,760 hours. 
If, for instance, you were to assume a reasonable 
salary of $15,000 annually, that breaks down to 
an hourly charge of approximately $8.50 per hour. 
The catch is that that is at 100% efficiency and 



rarely does any systems house or consulting 
firm end up being able to charge for all of the 
existing hours. Some of this inefficiency comes 
from nonchargeable hours expended on a customer, 
or for administrative details such as sales, 
finance and/or research development for a 
saleable package. It would be my guess that 
most systems houses really do not function at 
much better than 50% to 60% efficiency. Seventy 
percent is a consummation devoutly to be 
wished. With this assumption, it is only 
prudent to say that the hourly charge should be 
doubled to approximately $17.00 an hour. That 
means that we are at a fairly high level in 
hourly charges even before we have added any 
classical overhead. 

Overhead can be anything from equipment 
rental, regular rent, automobile expense, 
telephone, paper and storage supplies. A 
little imagination should allow the incipient 
programmer to make a list of this overhead. 
Let us just use an additional $200 a month 
overhead, which we will distribute evenly 
between telephone and motor vehicle expense. 
If we take our mythical 1,760 hours and divide 
it by 12, we get 146 available hours per month. 
At 50% efficiency, that says we have about 
73 chargeable hours. As an aside, it would be 
the lucky new programmer that has more than 
half of his time chargeable when he is initially 
starting out. If we divide our miniscule $200 
a month overhead by 73 hours, that will give us 
approximately $2.75 additional charge; so, we 
are now hovering in the $20.00 an hour range 
for our services, and we have not even done 
anything yet. Most overheads, in reality, are 
not that low even for a part-time programmer, 
and certainly the efficiencies I am talking 
about are far from imaginary. So, it would 
seem for a full-time programmer, the charges 
have to be $20 -to $25 per hour, and the 
part-time programmer with no overhead perhaps 
could charge approximately $10 per hour. I 
would note that plumbers and electricians and 
the rest of service trades which are utilized 
by small business charge at least comparable 
prices. If there is any sin that the system 
analyst - programmer commits, it is under- 
charging for his time. The moral is, if you 
don't value your time, don't expect anybody 
else to. The second rule that I would for- 
mulate is that programming and systems analysis 
is a time-selling business very much like an 
accountant or a lawyer. If you are serious 
about entering this business, you should sit 
,down with a sheet of accounting paper and list 
all of your expenses and their monthly costs 
and go through an hourly calculation such as 
I have indicated in order to figure out what 
an adequate charge is to get a proper return on 
your invested time. 



WEST COAST COMPUTER FAIRE 



240 



BOX 1579, PALO ALTO CA 94302 



Why Consider A Small Business Micro? 



When you talk to your small business 
entrepreneur, you should use the same 
criteria as you think you would use for any 
other piece of equipment. He is going to look 
at this as: 

A. A labor saving device 

B. For an increase in productivity 

C. To provide better information 

There are two types of information he is 
likely to want. One type is an application 
that tends to have very heavy computational 
requirements and is analytical in nature, and 
has relatively light file or transaction volume. 
The second type of application is characterized 
by a heavy load of individual transactions, that 
are heavy file oriented, and with relatively 
easy computational requirements. These trans- 
action-oriented applications are the things that 
you hear all the time like payroll, accounts 
payable, accounts receivable, inventory, sales 
analysis, order entry, and P & L and General 
Ledger. The business man's rationale for using 
DP is that it is going to make things either 
easier, cheaper, faster or more efficient. Most 
systems analysts and programmers that I know 
lose sight of this. In this case, I am on the 
side of the businessman and against the systems 
analyst or programmer who falls in love with 
complexity for complexity's sake. The projected 
use should clearly effect economics in time, 
money, or effort, or it should improve produc- 
tivity. If it improves service or provides 
better information to make decisions, then so 
much the better. 

The way to start is simply to ask the small 
businessman what he is trying to do and to listen 
carefully. If you can analyze the flow of his 
product or service, you are at the beginning of 
your project. Most projects can be divided into 
four stages: 



Analysis and specification - 
Des i gn 
Codi ng 
Testing 



30% 
30% 
30% 
10% 



If you look at this carefully, you will see that 
an analysis and design in any well executed 
project can take up to two-thirds of the available 
time. 

You've now listened to the businessman, you 
understand his product or services in some respect 
and he now looks at you expectantly with the idea 
that you are going to say something useful. Think 
about it. What are you going to say? What is more 
important, what are you going to do? 

I The first think that you should do is to say 
■that you will submit a written proposal. Emphasis 



WEST COAST COMPUTER FAIRE 



241 



on the written. It is a source of never 
ending amazement to me that many large or 
small companies that I have dealt with over 
the years that do not have written speci- 
fications and objectives for their computer 
installations. It is for this reason that 
McKinsey & Company at one point postulated 
that about 80% of the business computer in- 
stallations in the United States were 
failures. They defined a failure simply in 
the terms that the installation was not 
doing what it was planned to do. Installa- 
tions that were meant to provide total 
management information systems have in many 
cases degenerated into producing only pur- 
chase orders, payrolls, or inventory 
status. In many cases, these are high 
volume operations in large companies that 
have little or no relationship to what 
you are going to with a micro in a small 
business. 

I would approach the actual proposal 
in the following manner: 

1. I would have a conversation with the 
proprietor in which I would try to pin down 
that single thing which is impelling him to 
computerize. If it turns out to be "that 
everybody else is doing it", and that is 
the reason that he wishes to computerize 
something, I think I might quit right then 
and there. However, if he has a legitimate 
reason for wanting to computerize some part 
of his business, you should determine what 
are the priorities, and which things are 
most important. Try to concentrate on 
those. 

2. I would propose to him a study, for 
which he or she would pay , which would 
probably involve a minimum of 40 hours of 
your time both to prepare and document. 
This study would be paid for whether further 
work occurred on the system or not. As I 
pointed out earlier, probably 30% of the 
time that you should spend on a job is spent 
in specification, and is really the highest 
order of skill that you use. Coding is not 
the game in this case, and in fact if you 
start coding a point too early, you will 
probably create a system that is not 
responsive to your customer's need. 

The study should encompass the 
following areas: It should state explicitly 
at the beginning what the purposes of the 
system are to be, and additionally it 
should contain flow charts of the overall 
system and of the specific parts; also, 
some input specifications, which can be 
screen formats or anything else which is 
visible, as long as they are representative 
of the way the input really is to occur. 
There should be file descriptions and some 

BOX 1579, PALO ALTO CA 94302 



sort of output or report specifications. Again, 
they can be dummies. They do not need to be 
typed and they can be done on the standard report 
forms that most of the hardware companies produce. 
Again the simple fact is that they must be 
written down. There should then ' 2 a simple 
narrative as to how all this is going to be tied 
together. The proposal should be specified in 
this manner and the proposal presented to the 
customer. It should be paid for, and if the 
customer wishes to continue, he should sign-off 
at this point that this is what he wants. You 
should then provide him with an estimate for 
the hardware and the software to accomplish 
your proposal. It is obviously possible to 
include the hardware and software time and costs 
in the systems study, if that is what is 
desired. 

A note on schedules. It is quite common to 
underestimate time. Most people can estimate 
costs better than they can estimate time; so 
that you must be very careful that you can 
accomplish the specified tasks in the proposal 
in the time and hours that you allow. It is 
not a bad idea to total the times required for 
the individual tasks in order to get an overall 
job time. By that I mean it is far better to 
specify a job piece by piece in terms of trying 
to determine how much coding there will be and 
then look at the total at the end, rather than 
it is to look at a job and say that is a 200 
hour job. Most of the time, those "gut feel" 
estimates are wrong, and it is compounded in 
many cases by the fact that you are probably 
undercharging as far as your hourly rate is 
concerned. 

At each point in the process when a 
particular system piece is completed, you should 
have specified ahead of time test data that will 
demonstrate that the programs are working as per 
specification. Note that I emphasize test data, 
and that I emphasize agreeing on this ahead of 
time as part of the programming proposal. The 
rationale behind this is that you cannot really 
be responsible for the whole of your customer's 
information base. You cannot spend enough time 
to verify the integrity of all his information, 
and you are depending on previously specifying 
what the system will accomplish. There is 
many times a large gap in what the specified 
system will accomplish and what the customer's 
hidden agenda is, is related to what he wants to 
accomplish. For the uneducated, naive first 
time user of computers, it has been made to look 
ridiculously easy by much of the advertising 
and much of the media. So, in fact, he has 
high expectations where he or she should not. 
If you want to do a good job for your customer, 
and stay in business, you have to make sure that 
everything is done on a realistic basis. For 
that reason, test data should be specified 
ahead of time, and when that test data is run, 



it should be considered that the job is 
compl ete . 

Changes are extra, and you should make 
this clear from the beginning. If the changes 
result from a customer change in specification, 
they should be paid for. You should estimate 
what they are going to cost before you under- 
take the changes. In order to be fair to the 
customer, he should know what his change is 
going to cost him before you start to work on 
it. Probably more disputes have been caused 
by the failure to do this and the failure to 
specify things in writing then anything else 
in the computer business. I would repeat that 
software problems with customers come from 
unrealistic specifications, and from an 
assumption that the customer knows what it 
takes to change something. He does not if he 
is not familiar with computers. He thinks 
that he can change it the same way you erase 
something with a pencil. He knows nothing of 
program logic, and he has no real realization 
of how long it takes to reformat a report or 
a file with 10,000 records. 

There are some additional problems of 
which the fledgling systems analyst programmer 
should be aware. 

He should be aware of his customer's 
company atmosphere. How good are the regular 
administrative procedures of the company? How 
much is in writing? Is there discipline, not 
in the sense of punishment, but in the sense 
of following established procedures. Are 
there controls on the activities that are 
performed in the company or is he winging it 
oh the basis of notes on 'backs "of envelopes? 
Is there any administrative backup to the 
proprietor? In some cases, this company 
atmosphere should give you a clue as to whether 
you can design a successful system of not. 

Hardware 

In this context, I am talking about the 
use of so-called hobby or amateur equipment 
as opposed to that which comes from the 
commercial market. The difference is sometimes 
more in the support and maintenance areas than 
it is in the actual hardware. However, the 
so-called hobby systems are plagued by poor 
support. The small businessman expects to 
have any type of equipment he buys supported 
by the people from whom he purchases it. In 
the micro-computer business, so far that has 
not been the case. Unless the local computer 
store is well organized and able to support 
the customer's equipment, the first electronic 
failure that he has is going to be a traumatic 
experience. If somebody tells him to bundle 
up his CPU and send it back to the factory, 
and it becomes clear to the entrepreneur that 



WEST COAST COMPUTER FAIRE 



242 



BOX 1579, PALO ALTO CA 94302 



he is not going to be able to access his 
inventory or his general ledger until this 
mysterious entity comes forth with a new or 
repaired board. He is going to be in a rage. 
Secondly, if he finds out that there is not a 
serviceman available to him who can come to his 
office to fix this, he will probably be 
displeased. His criteria is probably the 
electric office typewriter. If he has a failure, 
the serviceman comes and fixes it, and likewise 
with his adding machine, or his lathe, or his 
milling machine, or his stamping press. The 
micro manufacturers have not yet achieved this 
maturity. 

Another hardware limitation is lack of 
proper peripherals. In many cases, if you are 
going to use the system in even a very small 
business, there will be large requirement for 
printed reports. A proper high-speed dot-matrix 
printer is still an expensive item, and in most 
cases can come to at least 50% of the system. 
The CPU represents the cheapest part of the 
system, with some form of mass storage also 
being a necessity for most small businesses. 
Of late there seems to be a tendency for most 
people to include a double or triple floppy in 
the small business system. I would describe 
this as the minimum which can be tolerated, and 
I have severe doubts, even with very small 
businesses, whether they can last very long on 
a floppy based system. 

A lot of the wonderful stories of success 
about systems being applied to small businesses 
come from a technically oriented proprietor 
who bought the system, using his business as an 
excuse somewhat in the manner that larger 
companies buy corporate airplanes and depreciate 
them at the company's expense. He has done all 
the programming and is intimately involved with 
the success of the system. I don't consider 
this as a true business application of the 
hobby micro. There are very few companies in 
terms of the total number of small businesses 
available in the market that have that 
capability. It is much more likely that you 
will run into an entrepreneur with no previous 
computer training who simply wants a packaged 
program that can be made to work. 

For the foreseeable future we are not 
going to be CPU limited; we are going to be 
limited by the mechanical peripherals which are 
still purchased by the pound. I also have some 
considerable apprehension about hard disk 
systems. In many cases now they are being 
offered as an add-on to S-100 bus systems. The 
problem is that the disk operating system has 
not been designed as an integral part of both 
the drive and the CPU. This can make for some 
severe operating problems and I will touch on 
those later when I talk about systems soft- 
iware. 



So, in general, we still have cheap CPU 
power; we con't have a good widely available, 
cheap, hard copy printer; and we don't have any 
standardized mass storage media. This 
situation should change when the electronic 
mass storage media become available. When 
either bubbles or CCD devices become widely 
available it will probably mean a big boost to 
the hobby-based system. There will be a big 
decrease in price because the fundamentally 
electronic devices are priced on a rapidly 
declining curve which is based on semi- 
conductor device yields. The electro-mechanical 
peripherals and storage devices are not subject 
to this kind of a learning curve. Therefore, 
their price does not decline as rapidly. 

Software 

There are probably only two fundamental 
differences between a micro processor based 
hobby system and a micro processor based commer- 
cial system. They are reliability and the 
presence of software utilities. Years back, 
when mini's first emerged, the situation was 
much the same as we find now with the micro's. 
We had a "gee-whiz wonderful" technical device 
that had very little in terms of peripherals 
support and nothing in terms of software 
utilities support. These utilities can be 
described as the tools which are necessary for 
the applications and systems programmer to use 
when he creates a system. It is probably not 
economically viable to write small business 
systems fromscratch without the aid of some 
powerful programming utilities. These are 
file managers, report generators, and data 
based systems. Interestingly enough, there 
appear to be a couple of companies in the 
hobby field that have worked out data base 
management systems for micros and I have seen 
some advertisements for some of these on a 
commercial basis. They are still not "poor 
man" systems, but they are cheaper than the 
commercial systems and they appear to have 
considerable capability. It would be my 
advice for any fledgling systems - analyst - 
business programmer to get some experience on 
an equivalent mini based system so that he 
understands what is available in terms of this 
type of software. Not only do the micro 
systems not have this kind of system software, 
but what they do have is nonstandard. This 
lack of standardization applies from every- 
thing from the version of basic that is used on 
up through the communications protocols. It 
is a "Tower of Babel" and the user and the 
systems analyst and programmer are suffering 
because of it. There really is not going to be 
any way to make a good efficient set of 
programming tools until the industry can get 
together and determine what standards it is 
willing to support. Up until that time they 
will be forced to look for commercial 



WEST COAST COMPUTER FA1RE 



243 



BOX 1579, PALO ALTO CA 94302 



packages and utilities. 



There seems to have developed a thriving 
business in package software. I have looked 
at much of this, and I am not impressed. Very 
little of it was written for the general case; 
most of it was written for one specific case or 
another, and it is not very adaptable or 
transportable because of the lack of standards 
and systems utilities that I mentioned. 



Conclusion 



TABLE 1 

NUMBER OF BUSINESSES FILING TAX RETURNS BY 
LEGAL FORM OF ORGANIZATION, 1973 

Total Businesses 13,343,406 

Corporations (1972) 1,823,335 

"Subchapter S" Corporations 

Partnerships 1,037,91 1 

Proprietorships 10,482,160 

Source: Preliminary Statistics of the Internal Revenue Service, 1973 



In short, with careful study you can be 
successful; but, it takes the use of an equal, 
or greater, dose of caution and business acumen 
as well as technical knowledge and programming 
skill . 



AMERICAN BUSINESS ENTERPRISES 

Over 20 million Small Bualnessea, 30,000 medium-size firms and the Fortune 1500 provide 
good* and services for our free antarpnaa economy. 17 million are sola proprietorships, 1 
nillim are Partnarahlpa fwtth an average of 3 partner* each) and almoat 2 million are Cor- 
poratlena. The following figure* ware compiled from I.R.S. Statistics of Income - 1968. 
"Nat Profit*" dees Loeaea). include "wages" to P r oc la im s (Schsd. O and Property Owners 
(Sched. Qt and are before federal income tax except for Incorporated businesses. About 
1/3 of U.S. Businesses showed Net Losses. Almost 700,000 new businesses are started 
each year, while 500,000 go out of business. 



Number of 
Businesses 
(thousand*! 

18^229 



Gross Nat Profits Average 

Receipts minus losses Profit 

tmlUlviH) IbUUom) W?U«ra> 



TTTAL A ix PL'S I MESSES 

Kentai Property Oners ™ S"o46 

Inventors b 2xplor*ra(Royaltlea) '50S 

TOTAL - Jig. ,Coaaerce,Servlcea, 

Construction, Transport «,F*raa u ,677 



$131.824 



Agriculture, forestry, flab 3,070 
Agricultural services 288 

Mining 68 

Contract Construction 840 

Manufacturing 397 



11. 800. 218 $128.600 S11.000 



Pood It kindered products 
Textile 4 apparel 
Limber a vood products 
Printing k publishing 
Cheaicala 

Fabric* ted aetai producta- 
Machlnery (non-electrical) 
Electrical Machinery 
Rubber , leather .atone 
Petroleua refining 
Primary Metal Industries 
Motor Vehicles 
Other Transportation equip. 
Mlac. Manufacturing 
Tvanaportatlon k Utilities 



Local Tranaportatloa 
Trucking a Warehoualng 
Coaauolcatlon 
Electric, Gaa a Sanitary 
Hctall-Wholeaale trade 



35 

72 

59 

125 



15 
367 



104 

208 

10 



Wholesale trade 

Building ■atari* la 

.General merchandise 

Food atoree 

Auto dealera 

Gasoline atatlona 

Apparel atoree 

Furniture 

Household appliances 

Eating places 

Drinking places 

Mlac. Stores 
Real Estate. Ine.. Finance 

Insurance 

Real eatate 
Servlcea 



453 

96 

337 

286 

373 

228 

103 

112 

43 

274 

114 

388 

1.223 



Hotels, Mote is. Trailer Parka a> Cai 

Personal aervlcea 
Laundry k dry cleaning 
Beauty shops 
Barber shops 

Business aervlcea 
Auto repair a, aervlcea 
Appliance e> other repair* 
Aauaeaent, recreation k theatrical 
Doctors, Dentists, Nureee k Health 
Legal aervlcea 
Educational services 
Engineering a Architects 
Accounting k Bookkeeping 
Other services 



795 
2.796 



47 , 277 

5,155 

16,708 

99, 039. 

6527966" 
' 43! 655 
45,435 
40,825 
24,416 
52 , 348 

-■37,608 
50,847 
46 , 854 
33,571 
86,096 
43,389 
58,179 
34 , 992 
22,215 

119.307 
51 1 376 
5,501 
27,752 
33,573 

591.099 

23S;il3 
20 , 826 
57,295 
74,934 
91,618 
20 , 434 
18,168 
16,854 
2,752 
21,696 
3,856 
39,772 

165.414 



3,564 

902 

1,749 

5,375 

45,339 



"4" 247 
2,081 
2,864 
2,073 
7,989 
27535" 
4,829 
3,196 
2,241 
4,138 
2,068 
5,614 
1,486 
2,243 

11,538 



1,200 

3,131 

25,720 

6,338 

114.200 



i;28S 

745 

4,953 

4,468 

20 . 166 



T5Tt57T 

59 , 500 

39,800 

35,100 

63,900 

55,106 

105,000 

245,900 

140,100 

4,138,000 

517,000 

2,807,000 

495 , 300 

149,500 

31.400 



spnir 

618 

91 
219 
126 
401 
200 
196 
204 
434 
ISO 

97 

67 
130 
131 



77,248 

26,750 

102.959 



"■57737- 

815 

2,656 

1,881 

2,284 

1,089 

1,021 

723 

226 

1,054 

419 

2,087 

18,743 



12,400 

3,581 

495 , 300 

203,100 

.800 



9,109 

13,038 

1,840 

1,852 

953 

22,153 

9,588 

2,235 

9,955 

17,172 

6,563 

459 

2,499 

2,780 

8,646 



4,917 

2,825 

21.425 



T55 - 

2,046 

313 

485 

458 

1,764 

788 

526 

577 

9,255 

3,530 

137 

632 

1,043 

708 



i4,9bo 

8,500 
7,900 
6,600 
6,100 
4,800 
9,900 
6,500 
5,300 
3,800 
3,700 
5,400 
15.300 
22,000 
3,600 
,700 



" 2:900 
3,300 
3,400 
2,300 
3,600 
4,400 
4,000 
2,700 
2,800 
21,300 
23,500 
1,400 
9,400 
8,000 
4,400 



Prepared by the AMEUCAN FEDERATION OP SMALL BUSINESS 

<o? 1. osusem w • o»c*co. u. «o*oi . -ww-c-f um or^ie* 



WEST COAST COMPUTER FAIRE 



244 



BOX 1579, PALO ALTO CA 94302 



BUDGETING FOR MAINTENANCE — THE HIDDEN ICEBERG 

Wm. J. Schenker, M.D. 

Medical Information Systems 

2086 Essenay Avenue 

Walnut Creek, CA, 9^596 

[k\5) 939-6295 



Abstract 



Earmarking capital for maintenance is 
one of the things which sets a business 
or commercial venture apart from a 
typical hobbyists activity. These cost 
factors can be dealt with in two ways, 
as a science and as an art. The former 
is the most visible, providing subject 
matter for textbooks, seminars, and 
college credit. Complex as it is, it is 
still based on the simple linear premise 
that 2+2 really does equal k, and such 
like. This makes it relatively easy to 
read and write about. 

On the other hand, what the science 
deftly avoids is a large object whose 
icy tip spells disaster in the deep for 
the unsuspecting businessman or 
professional. Etched in large letters 
on the submerged surface, hidden to 
ordinary view, is the warning, "Murphy's 
Law (and Cohen* s Corollary) Reigns Ever 
Supreme ! " 

It is this murky subject, the center 
of many a hallway conversation among 
insiders, and rarely discussed as the 
computer systems vendor plies his trade 
among the innocent, that will be 
emphasized in this paper. 

I. Introduction 



EXHIBIT A. There is a medical clinic 
which has had considerable experience 
with computers in the last decade. 
Three years ago-, when operational 
microcomputers were as rare and 
expensive as hen's teeth it had the good 
fortune to be offered on loan from a 
local government scientific organization 
a complete micro system of the highest 
caliber. Here was a chance to evaluate 
this new technology in a medical 
environment and for free. The clinic 
chief, wise in the ways of computer 
vagaries, when approached with this 
offer responded, "Sure we'd love to have 
use of such a system - but only if 
you'll pay the maintenance costs." 



have an electronics background." This 
challenge is not constrained by time 
factors nor by responsibility to an 
outsider such as your customer. Since 
time is money you can see how hobbyists 
can spend $10,000 in labor to repair a 
computer costing $1000. 

To the businessman or professional 
however, equipment breakdown means at 
best an added expense and at worst lost 
income and a blemish on the 
organization's market image. To 
appreciate the significance of this 
consider the following. When a computer 
system suddenly stops running, or "goes 
down" or "crashes" in the vernacular, 
the obvious cost is loss of service to 
the customer. What is probably in the 
long run a much more telling loss is the 
loss of data base integrity. This 
occurs when the transaction in process 
at the time of crash gets lost (or 
duplicated!), a record during update is 
lost, or a spurious record pointer 
change occurs. This last can result in 
possible loss of a massive number of 
records. The bottom line effect of all 
this on your business is loss of 
customer confidence. 

Let's look then at what must be done 
to maintain uninterrupted performance to 
your customer or client at the level the 
latter's accustomed to or contracted 
for. And some idea of what these 
actions will cost in the way of capital 
investment and added payroll. 

These questions are important even 
for a computer "application" or 
assignment which is only periodic in 
nature, such as getting a payroll out 
every two weeks. But they can loom 
large enough to become a pivotal factor 
in the organization's overall success if 
the computer's output needs to be close 
to continous. 

EXHIBIT B. A centralized medical 
boratory is planning a program which 
11 process up to 20,000 tests a day 
d return the results via computer link 



To tiie noooyist, so much in evidenc 

here at the Computer Faire today, system to outlying clinics the same day; any 

failure is a challenge which promises at breakdown in such a system for more than 

worst a broadening of knowledge, at its a few minutes could create a backlog 



best the ego rush of successful debug 
and repair of a non-working 
conglomeration of wires, chips and 
boards. "1 did it, and 1 don't even 

L WEST COAST COMPUTER FAIRE 



forcing delay of some results over to 
the next day. This would be considered 
intolerable in many cases by the doctors 
waiting for results. 

245 BOX 1 579, PALO ALTO CA 94302 



Thus the problem can be seen to 
warrant close study and inspired 
application. Indeed so much that 
journal articles and textbook chapters 
are dedicated to it. Now this 
literature tends to follow the formula 
of computer science publications in 
general. The orientation is extremely 
rational in tone and the reader is 
assumed of a likewise bent. The people 
in this field tend to have a heavy 
background in or orientation to 
mathematics. Thus you will find the 
literature also based heavily on a 
mathematical or statistical approach 
worthy of the physical sciences. At the 
heart of it all is the reasonable 
assumption that 2 + 2 really does = **, 
and such like. As a matter of fact the 
keyword here is reasonableness. It 
typifies the standard approach to 
maintenance strategy, the science of 
systems maintenance, and budgeting for 
maintenance. 

Contrasting this approach is that 
ill-defined, scantily documented, and 
trivially regarded collection of 
anecdotal material and opinions best 
summed up as the art of systems 
maintenance and budgeting. It is this 
aspect of small systems or microcomputer 
technology that will be emphasized in 
this paper. 

II. Some Standard Recommendations 

A superficial appraisal of 
maintenance would focus on the obvious, 
the specs of the warranty and 
maintenance contract. The important 
facets of the latter include: location 
of service depot, minor parts or all 
parts covered?, charge for travel time?, 
preventative maintenance schedule 
included?, and is service agreement on 
an hourly ("on call") or contract 
basis? 

However, experience dictates 
considering as well, the design and 
configuration of the system itself. 
Because these decisions made long before 
system purchase impact so heavily on 
subsequent problems, one must focus as 
well on these factors. Accordingly, 
note the following brief but 
representative list of points that an 
end-user would be advised to investigate 
prior to purchase. 

1. Buy from one vendor. A mixed-vendor 
potpourri will find inter-vendor finger 
pointing at the time of breakdown, each 
one accusing the other as the basic 
culprit. 



2. Vendor pedigree. The vendor should 
be big-name and well established, even 
tho the initial price is much higher. 
Avoid the fly-by-night and those without 
a track record. 

3. Vendor "burn-in".. Burn-in is the 
process of pushing the hardware close to 
its limits to see if it will stand up to 
prolonged temperature, vibration, 
humidity, dust, and electrical noise 
stresses. Investigate the details of 
this procedure by the vendor of your 
choice. 

k. MTBF & MTTR statistics. MTBF is the 
mean time between failures, and MTTR is 
the mean time to repair such failures. 
Ask the vendor to show you his figures. 

5« Vendor warranty. Investigate 
carefully the vendor warranty details. 
Consider this an important step. 

6. Source of maintenance contract . Buy 
your maintenance contract preferably 
from the system vendor, or as a second 
choice, from one of the nationally-known 
service companies. 

7. Track record. Buy a system that's 
been out in the field with a long, 
reliable track record. 

8. Site of system. Buy a system larger 
and more powerful than necessary for the 
application at hand - to allow for 
subsequent expansion of the applications 
environment, thru the use of 
■multitasking" software. (This 
technique, allowing 2 or more jobs to be 
handled by one machine at times 
apparently simultaneously will be 
discussed in more detail later.) By 
planning ahead in this manner you can 
save on maintenance in the long run, by 
avoiding complex and unreliable 
retrofits, kluges and mismatches. A 
"larger than necessary" system here 
could mean a minicomputer, even tho the 
price is 3 to 10 times that of a micro 
system. 

9. "Diagnostics". Buy all the 
available software packages of this 
genre. They allow you to test out your 
hardware in a routine and thorough 
manner, often enabling you to anticipate 
system failures before they cause a 
total "crash". 

10. IC chips soldered in. Buy systems 
with the chips soldered, not socketed 



WEST COAST COMPUTER FAIRE 



246 



BOX 1579, PALO ALTO CA 94302 



in. The latter technique is a source of 
intermittent failures. 



11. Mass storage peripherals. First 
choice for small systems is the "floppy" 
or flexible disc, with digital cassette 
or 3M cartridge devices for backup. 

12. Memory. First choice is high 
density dynamic RAM, because of low 
power and chip count - therefore higher 
reliability. 

13. Printer speed. In general buy the 
fastest printer you can reasonably 
afford. (By the way, low speed in the 
big-name world means about 200 
characters per second or somewhat less 
than 200 lines per minute. Medium speed 
is about 600, and high speed goes up to 
an astronomical 30,000!) 

lk. Install an UPS. This means an 
uninterruptable power supply. It should 
be large enough to handle the power 
requirements of your entire computer 
system. 

15. Ambient temperature. Keep your 
computer system cool; use adequate 
convection in the form of fans inside 
the chassis, and air conditioning in the 
room. 

16. Nicotine. Avoid smoking in the 



computer room - the fumes are poison to 
magnetic disc and tape media. 

17. AC power lines and grounding. Use 
good filtering and solid grounding 
procedures, respectively. 

18. Modular vs all-in-one packaging. 
It's OK to buy the latter - it cuts down 
on troubleraaking interconnect cables, 
dust, meddling by unauthorized 
personnel, and generally makes for a 
neater appearance. 

19. Front panel. Your system should 
include this item. It's handy in 
troubleshooting (and incidentally helps 
in software debugging). 

20. TLC during infancy. There is 
another factor, not apparent to the 
newcomer in the field of EDP (electronic 
data procesing), which should be 
considered for its, impact on maintenance 
costs. Altho a system should operate in 
flawless fashion the first time it's 
powered up - that almost never happens. 
A computer system, like people, needs 
lots of tender loving care during 



infancy to ensure getting started on the 
right foot. Lacking this care, troubles 
will hound the system possibly to its 
grave. So until this stage is reached 
you can't consider visits by service 
personnel as part of maintenance costs 
and loss. When the system is completely 
debugged and performing to vendor specs 
for say a month, subsequent breakdowns 
are then properly in the category of 
"downtime", or failure. 

III. Observations on The Foregoing 
Plus Som e Maverick Recommendations of mv 
own 

1. Single vendor systems. In the first 
place when you're dealing in small 
systems never buy from ANY vendor. Buy 
instead from your local retail computer 
shop. People you can talk to on a first 
name basis and whom you're likely to 
bump into at your neighborhood 
supermarket are much more likely to be 
responsive to your needs. In the second 
place if you buy what are called S-100 
products, you can count on a relatively 
high degree of inter-vendor 
compatability . More on that later. 

2. "Major league" vendors. There are 
no big name vendors whose primary 
business is small systems. Avoid the 
minicomputer firms and the big 
semiconductor manufacturers for whom 
micro systems are only a sideline - 
they're too big to care about you. 

Besides which, the "biggies" don't 
necessarily use the latest technology 
(because they feel somewhat immune to 
market pressures?). For example, the 
best support chip technology to day is 
Low Power Schottky (LS, for short). It 
is more reliable than its predecessor, 
TTL, because it produces less heat and 
electrical noise. 

EXHIBIT D. DEC'S PDP8 uses TTL 
support chips throughout. 

EXHIBIT E. Persci's floppy uses TTL 
support chips throughout. 

EXHIBIT F. NLS (a biggy in test and 
medical equipment) in their new model 
clinical lab unit uses RTL throughout. 
This technology, even older than TTL, 
was already vintage in 197^» when I 
first got into personal computers. 

3. Vendor burn-in. Temper the standard 
advice with the fact that the modern 
chip technology described just 
previously tends to be quite reliable 
once you're past the "infant mortality" 
stage. (This is chip failure within the 
first several hours of use.) If you do 



WEST COAST COMPUTER FAIRE 



247 



BOX 1579, PALO ALTO CA 94302 



feel you need it for your application 
environment don't rely on the micro 
vendors. They do very little of it. 
Instead have the local retail shop where 
you buy your system do it for you. 

k. Ah. the beauty of those neat MTBF 
and MTTR statistics! So crisp, so 
scientific, so neat, so precise. So 
valuable? 

At the outset the one thing to keep 
uppermost in your mind is that these 
MEAN figures apply only to Mr. MEAN 
End-user. He sits right in the middle 
of the bell curve of probability. Way 
off to one side of him is the fellow 
whose equipment never breaks down. But 
off to the other side is the fellow 
whose equipment fails before he even 
gets it out of the packing carton. Now 
no vendor will ever guarantee that 
you'll always fall between Mr. Mean and 
Mr. Superlucky - but many of their 
salesman will. But not in writing. 

To put it another way if you need to 
rely on 5 years between breakdowns you 
can't pick a system with a MTBF of 5 
years (even if such were available). 
You'd need a system with a MTBF of FIFTY 
years. To ignore this unpleasantry is 
courting a case of the "pre-demo blues" 
and full-blown operation of Murphy's 
law. 

EXHIBIT Fa. A large Bay Area service 
organization had planned for close to a 
year in 19?6 a demo for top echelon 
management of a complex multi-station, 
multi-tasked .system. As D-day 
approached everything began to fall into 
place, a tribute to the careful 
planning, competence and experience of 
the EDP (Electronic Data Processing) 
staff. By a week before the demo 
everything was pretty well sown up. 
Confidence was building for a successful 
performance on which would be pinned the 
hopes for the new budget. Confidence 
increased further in the last few days 
as everything continued to fall together 
right up to the eve of the big day. 
THEN the system crashed, too late to 
pick up the pieces in time for the 
visiting dignitaries, who witnessed a 
limping, anemic ghost of what was once a 
vibrant template for future glory. 

EXHIBITS Fb, c, and d. Three 
similarly painful experiences, on a 
smaller scale, with the first of my two 
systems in the past year. 

By the way, have you ever noticed 
something peculiar about luck, that 
phenomenon which is the" basic reference 
point for all statistical validation - 
except the statistician calls it 



"chance"? Anyway have you noticed how 
so much of life demonstrates that the 

lucky get luckier and the you 

know the rest? 

This may seem like rambling off the 
subject, but I'm reminded of how when I 
pull up to a toll gate pay station (or a 
supermarket checkout counter) I always 
look for the quickest line - and usually 
get the slowest. What bears mention is 
that altho I figured I must be a rare 
one, it's surprising how many others 
turn out to be members of the same 
club. 

And sort of inversely related to this 
is how a fellow intern back in the '50s 
made more money at, the end of every 
month than he got in hospital salary 
($125!) - by beating us all at poker for 
12 months straight. 

5. Vendor warranties. Forget it, in 
the micro field. They're worthless in 
terms of turnaround time (up to three 
months) - another reason to buy local. 
(See the following.) 

6. Maintenance contracts. The micro 
vendors don't offer them, and the 
national service companies don't have 
the necessary experience with the small 
systems. Again buy local, including 
your maintenance contract. 

7. Products with lone track record. 
Forget it. The entire market is only 
two years old. 



8. Buy a larger-than-necessary system? 
Don't, don't, don't. Buy the minimum you 
need for the application at hand. 
Discovered another application later? 
Buy another minimum system. For each 
added major application add another 
stand alone system, as close to 
identical as possible in hardware and 
software to your previous systems. 

Consider The Alternative. With 
today's labor costs in the form of 
programmer's wages, custom software 
implementation of the multitasking 
you'll need can cost 5 to 10 times the 
equivalent in hardware. 

More on Multitasking. Just to ensure 
proper understanding of this point a 
moment's digression into some details. 
This technique allowing two or more 
applications to be handled by one 
machine, at times apparently 
simultaneously, actually is a process 
akin to juggling 87 balls in the air at 
once - the computer's software 



WEST COAST COMPUTER FAIRE 



248 



BOX 1579, PALO ALTO CA 94302 



interweaving the multiple applications 
or "jobs" one between the other. The 
technique harks back to the days when 
the only hardware available were maxis 
and minis which cost so much per system 
that you were easily persuaded to 
squeeze out the maximum performance per 
piece of hardware bought. 

In fullblown versions used on the 
biggies it involves developing 
techniques for "queing" one job after 
another according to priorities, error 
checking of a complex nature, and 
complicated "rollback and recovery" of 
data when the system eventually crashes. 
It is responsible for a large software 
"overhead", i.e., software which is not 
earning you any money, while using up 
your computer's resources, both memory 
and processing speed or "throughput". 
Furthermore this is the kind of software 
that can take man years to develop and 
therefore costs plenty. It also helps 
to make the science of software 
development mysterious and their 
practicioners irreplaceable. Further, 
one would have expected by now something 
that complex and expensive would have 
made the large central computer systems 
"bullet proof" or impervious to error. 
It is certainly in part responsible for 
the somewhat unsavory reputation that 
computers have earned in non EDP circles 
over the past 20 years. 

EXHIBIT G. In July 1977 I applied 
for a Sears credit card. When it 
arrived it showed a purchase made in 
mid-June, 2 weeks before I ever saw the 
card. So I wrote to the special place 
you write to at Sears when there's any 
problem with your card. Well, they've 
been dunning me ever since, the monthly 
finance charge ever increasing. My next 
move is to cut the card up in small 
pieces, staple it all together with my 
latest bill and ship it off to Mr. 
Roebuck. 

EXHIBIT H. BART - spells Bay Area 
Rapid Transit, San Francisco's new train 
system. It also spells fiasco in 
connection with its originally designed 
computer control system. 

EXHIBIT I. Social Security. One of 
the computer scientists I work with 
knows of at least eight other SS card 
holders with his number. 

EXHIBIT J. Fill in your own 
favorite. 

9. Vendor diagnostics. There's hardly 
any available so have your local 
retailer write it for you. 

10. Soldered or socketed ICs. The need 



"1 

>ther 



varies with local climatic and oi 
factors - let you local shop make this 
decision. 

11. Mass storage peripherals. First 
choice is not floppies but MINI 
floppies, in particular North Star. For 
backup don't even consider digital 
cassette or 3M cartridge. Instead buy 
another North Star - it's in the same 
price bracket. If mini floppies don't 
meet your memory capacity needs bypass 
the full size floppy and go right to 
fixed discs. You'll thank me. 

How can 1 make such a recommendation 
in the face of the floppy's popularity? 
Well, the full-size floppy mechanicals 
are very tricky to align before you can 
get rock solid reliability. Then in 
about 6 months you may need it again. 
The mini floppies on the other hand have 
different physical dimensions (less 
inertia?) which make their tuneup easier 
to obtain and maintain. Where do I get 
this information? From end users, not 
from magazine articles. 

L2_. RAM memory pr eference. Spec your 

system to avoid dynamic RAM - it's too 
flaky with high speed peripherals using 
DMA (direct memory access), such as 
floppies and some graphics displays. 
Order instead FULLY static boards. Also 
avoid super high density boards such as 
6^K or 32K boards. Spec your system in 
increments of 16K. That way, if a chip 
goes bad on one board in a 6^K system 
you can still operate in a degraded mode 
with the other three. 

13. Printer speed. In general 1 
recommend the opposite: buy the slowest 
printer you can get by with. (What you 
can get by with may surprise you - as 
will be described later. ) Slower 
printers tend to stand up longer. 
Remember: "Speed kills." 

1**. Install an UPS. 

EXHIBIT K. Somebody accidentally 
trips on the line cord to the computer 
and pulls the plug. 

EXHIBIT L. Margaret, your secretary, 
is freezing because you won't turn up 
the thermostat to 80 degrees, so she 
quietly brings to work one day her 12 
Amp portable space heater and plugs it 
into the same 15 Amp circuit your 3 Amp 
computer is on. Everything's fine from 
9 to 930 AM with all transactions 
uneventfully processed and stored in 
RAM, at which time the program turns on 
your 3 Amp printer to get some hard copy 
and -- presto! -- the circuit breaker 



WEST COAST COMPUTER FAIRE 



243 



BOX 1579, PALO ALTO CA 94302 



pops and so does all your data from 9 to 
930 AM. Or worse yet, your disc 
operating software gets bombed, too. 

15. Keep cool. Yes. 



16. Avoid nicotine. Yes, it prevents 



computer cancer. 

17. Watch AC lines and ground well. 



Yes. 



18. All-in-one packaging of system. - 



INSTANT DEATH from a maintenance point 
of view. Go modular all the way. This 
point is so important that it will be 
covered in detail later. 

19. Front panels., Avoid them like the 



plague. The only one who might want one 
is your maintenance man, and he'll leave 
it in his toolbox on many jobs. 

20. TLC during infancy. Amen. Another 



reason to have service personnel close 
by, which means your local computer 
store, again. 

IV. Even Stranger Recommendations. 



1. "On Line" And "Real Time". 
Computer people bandy about two terms 
you should become familiar with, on line 
and real time. There are many 
definitions extant, but all you need 
remember is that some applications allow 
the computer to work in spurts, with 
long pauses for resuscitation in between 
- and at the other end of the scale some 
applications require the computer 
working 24 hours a day, 7 days a week 
with nary a skipped heart beat. Now the 
closer your application is to this 
continuous type of affair the more on 
line or real time it'll be considered. 

A piece of advice. If you're 
planning an application which could 
classify as pretty much on line or real 
time STOP AND RECONSIDER. 

2. "Non Stop". But suppose your 



3. The Nitty Gritty. Which brings us 
into the nitty gritty of my unorthodox 
approach to budgeting for small systems 
maintenance. My prescription for the 
typical business application which, 
altho not non-stop does have significant 
deadlines to meet, is simple. 

BUY TWO OF EVERYTHING. Two complete 
systems. Two computers, two sets of 
identical software, two sets of dual 
mini floppies, two backup storage 
devices (mini floppies again?), two 
keyboards, two video monitors, two 
printers, and lastly two complete sets 
of interconnect cables. (Ignore this 
last item and the whole deal is off. ) 

This strategy has three things going 
for it. The first is the ability to 
keep operating during a critical phase 
of activity when one computer crashes. 
True you lose the data that was in 
transaction and you can lose records, 
but with proper mass storage backup that 
barb can be dulled. Just flip the 

switch of the other system and transfer 
your work to it. (If you get your 
retail store to write some software and 
add some minimal hardware you can get a 
semi-automated transition from one 
system to the other.) You've spent 
twice as much in capital outlay in 
exchange for almost instant repair 
service, unobtainable any other way at 
any price. 

The second advantage has~~ta thr with 
that low speed printer I recommended 
earlier. By using your backup computer 
that is otherwise idle, to drive your 
printer you can overlap your application 
functions in time. For example you can 
be talking to one computer via its 
keyboard while the other is printing 
out your three hour report, but you 
could care les. In this manner you can 
usually do quite well with a 15 CPS 
(characters per second) printer where a 
60 CPS would be considered the bare 
minimum, or a 30 instead of a 120, etc. 
(This same strategy can be considered if 
you're trying to get by with a low speed 
mass storage peripheral, the audio 
cassette, which can be quite reliable if 
properly set up. ) 



application calls for nothing less than 

the extreme, a continous run? It's then 

logically enough, labeled non stop. 

More advice. If you're planning this 

kind of an application — STOP AND DON'T 

RECONSIDER. 

Unless your retail shop can configure 

your hardware and write enough software The third and most important 

to give you the micro systems equivalent advantage I save for last. It is 

-f what Tandem Computers, Inc. claims in key element in a novel concept of 

computer technology, geared to match the 
microcomputer's role in the increasingly 
popular EDP trend towards "distributed 
intelligence" thru "distributed 



the 



their ads they can do with their large 
system. (If you're interested they're 
at 20605 Valley Green Drive, Cupertino, 
CA, 95014.) Their system is what is 
called "multiple redundant". 

WEST COAST COMPUTER FAIRE 



processing". What these imposing 
250 BOX 1 579, PALO ALTO CA 94302 



phrases really mean is that instead of 
relying on one large computer to do all 
your work, you spread out some of this 
work by using a network of small 
computers scattered around the 
hinterlands. 

In effect you trust your eggs to more 
than one basket. This trend is having a 
salutory effect on the whole industry, 
making systems less vulnerable to "total 
crash". When the big one goes down 
people out in the boondocks can still do 
some work while waiting for the system 
to come back up again. It*s cheaper. 
It's also less complex and mysterious. 
(The enormity of the software problems 
associated with one computer doing 
everything was referred to earlier. ) 

Distributed Maintenance. I recommend 
we start doing the same thing, now, with 
the maintenance process. In a phrase we 
need what I like to call DISTRIBUTED 
MAINTENANCE. Spelled out this means 
that instead of relying on a central 
repair source (the vendor, or a national 
repair organisation) we get this service 
out into the field as close as possible 
geographically and timewise to the one 
who signs the bottom line, you the end 
user. 

EXHIBIT M. An excellent example of 
this kind of thing in actual practice is 
described by a resourceful Canadian, 
Jean Francois, in connection with a 
large minicomputer system he runs for 
the Ministry of State for Urban Affairs 
in Ottawa, published in DATAMATION, 
August 1977* This article should be 
must reading for you. 

But let's suppose you can't see your 
way clear to buying 2 of everything. 
Then with one system at your disposal 
your best bet would be to sign up with 
your local computer store for as close 
to complete coverage as you can afford 
(and the store can provide). The 
contract specs to check apart from the 
usual are: what is the guaranteed time 
to arrive, and what about nites, 
weekends, and holidays? Expect to pay 
from 10% to J0% of the system's purchase 
price annually, depending on whether you 
get minimum or "total" time coverage. 
With that kind of annual cost facing 
you, my proposal of 2 of everything 
seems less outlandish. 



Distributed Maintenance Protocol. 

Setting The Stage. The success of 
this strategy will depend on your local 
computer store for three things. 

1. A contract for repair of the 
defective equipment you track down with 
this method. It should specify the 
maximum "turnaround time" you think 
you're application can tolerate. One to 
three weeks will usually do for typical 
applications. (You'll save a bundle 
right there. ) 

2. Developing software, in the form 
of a short diagnostic package, that will 
tell you when in the course of your 
testing you've in fact bumped up against 
the troublemaker and have the system 
runnable again. This message will 
ordinarily be in the form of video 
screen prompts. 

3. Installation of an electronically 
simple yet very effective monitor that 
tells you if your power supply secondary 
voltage outputs (usually 3) are in good 
health. This will be in the form of 
little red pilot lights set into your 
(otherwise blank!) front panel. Or they 
can be installed inside the computer 

cabinet away from the high voltage end 
of your power supply, which should have 
a protective barrier placed over it by 
the shop personnel. This is so you 
can't monkey with it accidentally or on 
purpose. Using this last arrangement 
the lights should be in clear view on 
lifting off the computer cover. 

The importance of these monitor 
lights is this. If any of them are out 
it meansyou've lost one of the 
voltages; you should PROCEED NO FURTHER 
with subsequent tests, but get your 
maintenance man on the phone. 
Fortunately this will be a rare 
occurrence . 

First Phase. Swap modules or 
subsystems, one by one, FROM the known 
good TO the crashed system. Be sure the 
power is off both systems as you're 
making each swap. Off how long? Long 
enough for the capacitors to discharge = 
when the blower fans stop rotating. Do 
this until you find the trouble. Here's 
a good sequence to follow: interconnect 
cables, mass storage device, video 
monitor, keyboard, printer, and finally 
the computer itself. By now you'll have 
found out which module isthe problem. 
If it's any but the computer it's a job 
for your retail store. If it is the 
computer go on to the second phase. 



WEST COAST COMPUTER FAIRE 



251 



BOX 1579, PALO ALTO CA 94302 



Second Phase. Remove the cover from 
each of the computers. Start swapping 
boards, one by one, in the same manner 
you did with the modules previously 
(Remember, power off!). A good sequence 
to follow: memory boards, mass storage 
interface board, l/O board, and finally 
your CPU card or board. 

Simple Procedure. Remember, don't 
make this a complicated procedure - do 
it "by the numbers", preferably written 
down on a large cardboard placard placed 
on the wall near your system. Teach 
yourself the technique first, then you 
secretary, nurse, bookkeeper, office 
boy, or Girl Friday. A maximum of maybe 
l/2 hour using almost no technical 
expertise, is all you'll need to track 
down most troubles that can arise. You 
can then in a more leisurely fashion, 
send the defective piece of equipment to 
your retail shop where routine (and thus 
less costly) repair at the component and 
IC chip level can be performed. 

Equivalent Performance. To achieve 



the equivalent performance in terms of 
ultra short downtime and repair of 
defects would require keeping a full 

time computer tech on your premises (and 
payroll), AND he would have to have 
available a full set of replacement 
parts to achieve his goal. That salary 
in today's market is $15,000 and up a 
year. Then add the equivalent of "2 of 
everything" anyhow. 

Cheaper in The Long Run. Distributed 
maintenance, made possible by modern 
technology, will move computer science 
considerably closer to the kind of 
performance you the businessman or 
professional, expected to get in the 
first place. This is the kind of 
performance which spells business or 
professional success, which translates 
to more income. To boot, distributed 
maintenance is cheaper in the long run 
than any other method. 

No Fancy Test Equipment. While on 
the subject of cheaper let's cover a 
related point. Don't be talked into 
buying fancy and expensive products that 
enable you to troubleshoot like the pros 
do it. That's NOT what distributed 
maintenance is all about — . it's about 
non-electronic people using their time 
to get on with their own profession. So 
don't buy a scope, a logic probe, or a 
logic analyzer. And don't get into 
swapping IC chips either - you could 
blow a good one after a bad one that 
way. 

WEST COAST COMPUTER FAIRE 252 



k.m Maintenance in a small town. With 
all this reference to relying on your 
local retail computer store, what if 
you're in a town with no such source 
available? Well in that case what might 
otherwise appear to you as a luxury, 
distributed maintenance, becomes a stark 
necessity. 

One Proviso. Even with 2 of 
everything don't even consider a 
near-non stop application if you're 
located in places like Last Chance, 
Kansas or Winnemucca, Nevada. There 
you'll need THREE of everything. Also 
you'd better consider making a special 
(and costly) contract with the nearest 
retail store with provisions for (a) the 
technical personnel remaining on site 
until the system's thru its infancy and 
TLC period, and (b^ paying them only 1/2 
the total purchase price on delivery, 
the other half after certain clear-cut, 
mutually agreed upon tests can be passed 
by the system's operation. If you can't 
get this kind of arrangement consider 
(a) foregoing the pleasures of rural 
life and moving to or near an -ugly big 

city or (b) running your business as 
before, in the manual mode - and buying 
a cheap computer for use at home and 
calling it a hobby. 

5 « The weirdest recommendation of all. 
This one's saved for last, since it's so 
obviously beyond the pale in our culture 
where rationality is considered the 
final criterion of any scientific 
endeavor. 

Right at tile outset of systems 
planning, before you even look at your 
application needs, step back and ask 
yourself this question, and then answer 
it as honestly as you can. "Am I (a) 
consistently lucky in business or 
technical ventures, (b) lucky as often 
as unlucky, or (c) consistently 
unlucky?" 

If the answer is (a) then much of my 
ramblings can be ignored. If it's (b) 
it'll pay you to reflect on them. If 
it's (c) you're in the same boat I'm in, 
and to ignore my warnings augers well to 
bring you deep grief and near insanity 
in the form of slipped schedules and 
broken promises. (Take heart tho in the 
maxim, "Unlucky in technology, lucky in 
love! " ) 

V. Summary 

This paper has emphasized the more 
quirksome aspects of small systems 
maintenance problems. The major points 
made were: 



BOX 1579. PALO ALTO CA 94302 



1. Cost-effective maintenance decisions 
depend heavily for their success on 
making the correct choices long before 
the system goes down. As a matter of 
fact, it is at the time of original 
spec'ing out the system to be purchased 
that most of the die is cast. 

2. The single most important aspect of 
the system specs includes 

a. depending on purchase of 2 of 
every piece of equipment, thus allowing 

b. the full exercise of the 
distributed maintenance concept. 

Spelled out for small systems it 
means doing in-house swapping of 
interconnects, modules, and boards, 
backed up by a firm contract with a 
local reputable computer retail store 
for actual repair of the faulty 
equipment. 

VI. How to Evaluate This Paper 



After reading this far if you're a 
businessman or professional concerned 
about how he spends his dollars, you 
should be asking the question, "Sure 

this presentation is witty and 
provocative, but does he know what he's 
talking about?** And if you ask this 
question you've got to ask the next 
question, "Who can I ask to get the 
answer to my first question?" 

The Experts. So you're left to turn to 
the "experts" and the "authorities" in 
the field. Several things to remember 
about these fellows hov?ver, 

1. The field is so new there hasn't 
really yet developed a large cadre of 
knowledgeable neople. 

2. Then there are those experts whose 
expertize is in the mini and maxi 
computer field. Therefore they're 
likely to give you the standard list of 
recommendations that are valid in their 
world. Ipso facto, most of my 
unconventional recommendations will be 
"thumbs down" for them. 

3. Of those real experts we're looking 
for there are 2 general categories: 

a. The ones who've decided to 
capitalize on their know-how - they 
become vendors and computer store 
proprietors (I'm fortunately acquainted 
with some real honest ones, but you've 
got to be knowledgeable in the first 
place to recognized this honesty. ) 

b. The other kind who are hard to 
find. They're usually not in the market 
place selling their know-how but busy 



in their labs having fun. You won't 
find them in the yellow pages. 

The 87-foot monster. But wait, 
there's more yet. Filling this void 
then is the 87-foot monster I've been 
making the butt of my argument 
throughout this paper, the vendor 
salesmen. He's dangerous for you 
computer system's welfare, because - 

1. He's more accessible - you'll run 
into him everywhere: at the trade shows, 
on TV and Radio commercials, and in the 
slick business magazines. 

2. He's got less scruples. 

3. Mathematical and statistical "facts" 
are great tools in his hands to blur 
your vision of the nitty gritty you 
should be appraising instead. 

The Saving Grace. With all the caveats 
just mentioned where then can you turn? 
The answer is actually pretty straight 
forward. Go to your local retail store 
and ask for a list of the purchasers of 
10 or 12 complete business or 
professional systems they've installed 
prior to 6 months ago, and are presently 
serving on a full maintenance basis. If 
they haven't got that many to show you 

chances are you shouldn't be doing 
business with them - they haven't got 
the experience. Customers more recent 
than 6 months don't bother with - that 
doesn't give Murphy's Law long enough to 
rear its ugly head. 

Then make up a short polite note 
saying you'd like to talk by phone to 
them for 3-5 minutes the following week 
to inquire about maintenance experience 
and costs with their system. When 
you're done making these dozen calls 
you'll know whether I know what I'm 
talking about. 

VI. Cohen's Corollary 

I've enjoyed writing this paper and hope 
you have enjoyed hearing or reading it. 
But the alert among you may have noted 
there's still one item mentioned in my 
introduction that has yet to be laid to 
rest, namely the enunciation of Cohen's 
Corollary to Murphy's Law. You can't 
have heard of it before, because this is 
its first public proclamation. It goes 
like this. "When you'Ve taken that very 
last precaution possible to prevent 
Murphy's Law from operating in your 
applications environment — THAT'S when 
it probably will." 



WEST COAST COMPUTER FAIRE 



253 



BOX 1579, PALO ALTO CA 94302 



MICROCOMPUTER APPLICATIONS IN BUSINESS: 
POSSIBILITIES AND LIMITATIONS 

Gene Murrow, President 
Computer Power & Light, 12321 Ventura Blvd., Studio City, CA 91604 



Abstract 

Computer Power & Light, Inc. has been 
installing micro- computer systems in 
businesses since Fall of '76. This 
presentation describes four aspects of 
our experiences: a short description of 
the hardware we use; some actual case 
histories of customers for whom we've 
provided business systems; some of the 
jobs we've turned down (which is almost 
as illuminating as some of the jobs 
we've accepted); and fourth, some of 
what we consider to be the important, 
but often overlooked aspects of 
m i c r o - c om p u t i n g in business 
applications. 

Introduction 

It seems to me that in the heady 
atmosphere of the growth of this new 
industry, a lot of claims are being 
made that are somewhat fantastic. We 
hear phrases like "what you can do with 
these are only limited by your 
imagination", at worst, to the no less 
extravagant, but potentially deceptive, 
claims that you can "do your payroll" 
with a $600 ..00 computer. Computer Power 
and Light, as a company, has had to 
face the music. We have had the 
customers coming in, magazines rolled 
up in their hands saying, "I want a 
computer that will do all these 
wonderful things." We've had to 
educate this customer, sell him a 
machine when appropriate, and then make 
sure that it worked and kept working. 
That's the basis of the experience that 
I'm going to relate. 

Hardware 

The hardware we work with is our own 
Compal-80 microcomputer. Compal is a 
contraction of Computer Power & Light. 
The machine is an 8080 based micro. It 
has a serial interface for devices like 
Xerox Diablo printers, DECwriters, 
modems, and others. It has a video 
display of 16 lines by 64 characters, 
an operating system on ROM, an anywhere 
from 32 to 56K of memory. We also 
incorporate the Micropolis dual mini- 



floppy disk drive. This is a high 
density drive; each diskette holds 315K 
bytes or characters of information, 
which is approximately 150 single 
spaced typewritten pages. We use 
either the Diablo daisywheel printer 
for our word processing applications or 
the Texas Instruments 810 printer for 
business applications. This is not a 
mini-computer, it is a micro- computer, 
and as such has all the price 
advantages and speed disadvantages that 
micro- computers have. A 56K system 
with the Diablo printer costs $8,605. 
A similar system with the TI 810 matrix 
printer costs $7,300. Of course 
there's lots of good hardware to be 
found. It's the software and the 
support and the other things that get 
tricky. 

Word Processing 

Now for some of the applications with 
which we have been successful and that 
you might consider as possibilities for 
a micro- computer system in business. 
The first application is word 
processing. It seemed like a natural 
to us. There's no number crunching 
really so the speed of some of the 
single chip micro- processors wouldn't 
be a factor. Our word processor, which 
is written to our own specifications, 
is written in the machine language of 
the 8080 and is consequently very fast. 
It is used to create business letters, 
assemble long documents from boiler 
plate mater ial , retype multiple 
revisions automatically, send the same 
"original" letter to each of hundreds 
of names on a mailing list, and index 
archived documents. It has essentially 
three functions: an edit function, a 
print function and a storage and 
retrieval function. In the edit mode 
you can enter text in a normal way on 
the typewriter, scroll text on the 
screen, search and replace a word or 
phrase throughout a text, "cut and 
paste" pieces of text (re-arrange 
blocks of text), bring in boiler plate 
paragraphs that are stored in a 
diskette library to assemble long 



WEST COAST COMPUTER FAIRE 



254 



BOX 1579, PALO ALTO CA 94302 



documents from boiler plate material, 
retype multiple revisions 
automatically, send the same "original" 
letter to each of hundreds of names on 
a mailing list, and index archived 
documents. It has essentially three 
functions: an edit function, a print 
function and a storage and retrieval 
function. In the edit mode you can 
enter text in a normal way on the 
typewriter, scroll text on the screen, 
search and replace a word or phrase 
throughout a text, "cut and paste" 
pieces of text (re-arrange blocks of 
text) , bring in boiler plate paragraphs 
that are stored in a diskette library 
to assemble long documents and things 
like that. In the print mode, you can 
set up your margins, your spacing, 
whether or not you want the right 
margin justified, you can have four or 
five different margin formats going at 
the same time, you can have variable 
character spacing, variable page 
lengths, variable line lengths and you 
can mix these up anyway you like, 
throughout a document. Finally, in the 
storage and retrieval mode, you can 
take a document, whether it's a full 
report or a paragraph or whatever, and 
store it under a name that's up to ten 
characters long, and then retrieve it 
just by typing that name on the 
keyboard. 

So that's what we're doing with word 
processing. We had one eye on the 
Vydek and Lexitron systems when we 
designed it and the other eye on the 
pricetag. Our word processing systems 
start at about $6,0 r 0.00, which gives 
all of us micro- computer people a 
tremendous advantage over the so-called 
blind or non-video systems, such as the 
IBM mag-card systems or the Xerox 800 
system. And, we're about half the 
price of the large video oriented 
systems. Most importantly, the WORDPAL 
(as we call it) is just a program which 
runs on the general purpose micro. 

Secretarial Services. Who's using 



WORDPAL? Well, out in Van Nuys, 
there's a secretarial service called P 
& S Services. This was the first 
computer system we've ever sold to a 
woman. Harriet Wright became very 
knowledgeable about computers and 
looked all around before coming in. She 
told us the plight of secretarial 
services. They have very demanding 
customers who want the document today. 
If they wanted it tomorrow, they would 
bring it in tomorrow; that old story. 
The work has to be done rapidly and 
accurately. If the service isn't 



accurate the customer would type 
documents himself. Oftentimes they'll 
work all day on a document only to have 
the guy come back with the thing with 
500 different modifications that he 
wants. Or he wants all of the dates 
changed or something like that. So they 
need a flexibility for multiple 
revisions. Also, P & S needs to 
maintain steady customers who expect a 
consistent quality from her and 
consistent number of formats for the 
type of document they're going to be 
getting from her, whether they're doing 
speeches or manuscripts for a 
particular publisher, or whatever. So 
she was in the market for a word 
processor, and being a small company, 
like many of these secretarial services 
are, she wanted something she could 
afford and that had all of these 
capabilities. And, that's why I think 
she came to us. Another interesting 
aspect of the secretarial service 
business, and all you consultants 
listen hard, is that they all have 
delusions of grandeur, good delusions 
of grandeur. They would all like 
eventually to be business services, not 
just secretarial services. They'd like 
to offer bookkeeping help and record 
keeping and consequently they are very 
interested in the data processing 
capabilities of the micro- computers. 
So, the final clincher for P & S 
Services for us was that they knew that 
they could, by just changing the 
diskette, go from word processing 
capability to data processing 
capability. In fact, they are now 
starting to use our client accounting 
package to keep the books of the many 
customers whom they also serve as a 
secretarial service. 

Lawyers . The other big market for word 
processing, especially in the micro 
field, is lawyers. The main thing 
lawyers do, as we all know, is collate 
things they've used before. There's 
all this boiler plate that's sitting 
out there that they just like to pop in 
to a document, one section right after 
the other, and assemble up a set of 
interrogatories or a contract or a 
will. We offer them the capability of 
storing all that boiler plate on our 
disk system. Once the appropriate text 
is booted in off the disk, into the 
computer, they can go through and tell 
the computer that wherever you see the 
name Gene Murrow, replace that with 
Adam Osborne because I'm on Adam 
Osborne's case today. And that's 
precisely what they do. 



WEST COAST COMPUTER FAIRE 



255 



BOX 1579, PALO ALTO CA 94302 



We hooked up with one lawyer, in 
particular, who's been very influential 
to us and has helped us develop a real 
first class legal package. His name is 
Tom Lambert. He specializes in 
personal injury cases arising from 
aircraft accidents. He's a very smart 
guy; he and two of his colleagues have 
engineering degrees and have put in 
their years at Lockheed before entering 
law practice. When they go after the 
biggies like Cessna or Bell Helicopters 
(whom they specialize in), they can 
bring to bear a lot of their 
engineering capability, because they 
can evaluate rollover rates and all the 
bad things that happen to helicopters, 
for example. But the problem was that 
there was only three of them; when 
they'd sue Bell Helicopters, Bell would 
come in with their corporate law staff 
of 407 typists, 3^3 clerks and the 
rest. Tom shared his typist with the 
other three man office down the hall. 
He saw our system as a tremendous 
equalizer . Now when he takes on Bell 
Helicopters he can spend his time 
worrying about the engineering data and 
his overall plans while the machine 
automatically runs off fat books of 
interrogatories, which is what lawyers 
do to make life nasty for the 
opposition. The interrogatories often, 
in an aircraft case, run three and four 
hundred pages per plaintiff. Often it's 
a lot of boiler plate and cutting and 
pasting. He used to take three weeks to 
do each plaintiff's set of 
Interrogatories , just in the di soever y 
process (which is the opening salvos). 
But now he's got it down to about 3 
days per book, from three weeks, a 
factor of seven. Plus, he's free now 
to concentrate on the engineering data. 
Once again, I think the clincher was 
that he saw the Data Processing 
capabilities. So, when he's done 
preparing the interrogatories and is 
ready to go to the brief, or whatever 
it is, he can put in the Data 
Processing disc. He has written with 
his colleagues several engineering 
analysis programs that will model what 
happens when a 747 hits another one 
broadside or what happens to a 
helicopter when one of the rotors 
begins to loosen. These have become 
critical to his profession as he's able 
to put out graphical displays of this 
data that a jury can understand. So 
he's got the equalizer between him and 
the large law firms plus he's enhancing 
the impact of his own evidence, using a 
micro- computer, right where it counts 
- - in front of the jury. 



Academics . The third application for 
our micro-systems and word processing 
has been among academics: professors, 
departments and universities. They 
have a tremendous need for storage of 
yearly updated documents such as lists 
of required courses or lists of who's 
on leave this year. Plus, the 
department secretaries are under 
tremendous pressure to relieve the 
pressure that the professors are under 
in the "publish or perish" syndrome. 
They've got to get a few articles out 
to the journals every year and they 
depend on the department secretaries to 
do that typing. We hooked up with a 
fellow by the name of Dr. William 
Oldendorf at the V.A. Hospital in 
Westwood. He told us all about lab 
reports and articles to journals and 
things like that and once again he 
purchased a micro- computer based word 
processor so he could do those reports 
and submit those articles to the 
journals. When the editor comes back 
with 112 suggested modifications, which 
a typist can't do, he can sit down and 
waltz through the manuscript on the 
video screen, making the corrections. 
He then hands the diskette over to the 
typing department or the typist who 
prints it out. It's been a tremendous 
help for him. 

So that's word processing in three 
actual applications where people are 
saving money and are enhancing their 
businesses right now. They're not 
playing Star Trek with -these machines 
at all. 

Accounting 

The second major area, of course, is 
accounting. We wrote a client 
accounting package because two or three 
accountants walked into our store and" 
insisted that they could tell us 
everything we needed to know. So we 
worked with these three accountants and 
came up with a General Ledger or 
Bookkeeping package that allows you to 
set up your own chart of accounts and 
specify what format you want your 
reports in. , You then enter your 
transactions on a daily basis or weekly 
basis or hourly basis. And, at the end 
of whatever your reporting period is, 
whether it's a day, a month, a year or 
ten years... it'll go through the usual 
procedure. It does a trial balance in 
about 70 seconds. And, if everything 
eventually balances, (which you hope it 
does) out come an income statement, a 
cash receipts journal, check register 



WEST COAST COMPUTER FAIRE 



256 



BOX 1579, PALO ALTO CA 94302 



journal, five other regular journals, a 
complete General Ledger, a balance 
sheet, any schedules that come off the 
balance sheet and any subsidiary 
ledgers. All told it takes about an 
hour to run out all these reports. 

One of the accountants that came in was 
a woman by the name of Audrey Roche. 
Mrs. Roche is a professor of 
accounting, in fact head of the 
department, at Santa Monica College. 
She also runs her own business which 
provides the accounting services to her 
own clients. She was the one that 
helped us the most in developing this 
package and she's running it right now. 
She has a small service bureau which 
does people's books. She wouldn't have 
been able to compete doing it manually 
because a lot of the service bureaus 
now are automated . So , she wanted to 
automate and still have her own 
business. And, that's why the micro 
became important. A nice side benefit 
of all of this is that she sees the 
tremendous movement toward this 
solution. Santa Monica College is going 
to be among the first colleges in the 
area to offer a course specifically 
aimed at small computerized accounting 
systems. We're looking forward to 
providing several accounting systems 
for the college so that they can do 
that. 

Real Estate Investing 

Another interesting application that we 
found and that we're able to provide 
micro-computer support for was the real 
estate syndicators. These guys abound 
in Los Angeles, where even the Arabs 
are buying up property at a horrendous 
rate. What a real estate syndicator 
does is he gets a group of people 
together and says "lets all pool our 
money and buy this building and make 
lots of money." The trick is to 
convince everyone that it's a good deal 
and not to drop out. So, what they 
need, of course, is a forecast, a 
spreadsheet, that tells what's going to 
happen to an income property over the 
years. 

We sat down with two real estate 
brokers/ syndicators. It was one of the 
most interesting weeks we spent at the 
store, and came up with a package that 
does the following: 

You enter the purchase price of the 
property, the down payment, the 
depreciable basis, rate and term, (if 



you don't know it you enter some data 
from the Tax Assessor) . Then you enter 
a whole bunch of financing instruments, 
which is real estate jargon for loans. 
The data you enter is the amount of the 
loan, the term of the loan, the 
interest rate. That alone would have 
been easy except these guys are always 
talking about refinancing, balloon 
payments, variable interest rates. For 
example, you can start with three loans 
and in month 27 let's say, pay off two 
of the loans with a third loan at a 
different interest rate, pull some cash 
out of the deal at that point to pay 
for the air conditioning system that 
you're going to put in at that point, 
which you're going to depreciate for 
ten years to get a tax write off in 
year five... So, those are the deals we 
had to sort through and which caused 
our programmer to lose most of her 
hair. 

After you do the loans you then have to 
do an income package. You tell the 
machine what the gross income of the 
building is or what the income per unit 
is and it prints out a nice list of who 
the current tenants are, what the rate 
per square footage is on the building 
as a whole, who's way under, who's way 
over, and what the vacancy rate is. 
Then you put in an expenses package. 
There are 20 Categories, everything 
from taxes and maintenance on down to 
the gardener and the swimming pool 
maintenance guy. What the program does 
after it chews up all this data is a 
year by year forecast or a forecast for 
a particular year that gives you the 
bottom line — the return on investment. 
That's calculated in several ways: the 
income versus the cash you put in, or 
the build-up in equity, or income vs. 
equity, and so forth. 

One of the biggest features of it is 
that a syndicator can put in the tax 
bracket of any investor before this 
thing flies off and it'll tell him the 
implications on his personal taxes. 
That's very important for doctors and 
others who often end up with too much 
money at the end of the year . They want 
to know what the implications are on 
their own taxes if they invest in this 
deal. The program also computes 
post-tax and pre-tax spendable and post 
tax and pre-tax income as far as the 
IRS is concerned. 

Another nice thing that it does is 
allow you, after printing out any 
forecast, to manipulate any single 



WEST COAST COMPUTER FAIRE 



257 



BOX 1579, PALO ALTO CA 94302 



variable to change the picture. 
Suppose we fired the gardener, how 
would that impact our income in the 
year five? 

The syndicator who was the first one to 
take delivery of the system about five 
months ago was Sheldon Allman in North 
Hollywood, California. He is a former 
stand-up comic. I don't know what that 
says about real estate. But, one of 
the things that interested him about 
the machine was sort of the inverse of 
what I was talking about before. He 
finally got sold on buying the machine 
because of its word processing 
capabilities. When he's all done 
running out all of these forecasts on 
different income properties he then 
turns to the word processor to write a 
very nice cover letter and cover 
description that goes "personally 
addressed" to each of his prospective 
clients as "this is a really good deal 
for you". So he uses both capabilities 
of the micro-computer . 

Retailing 

The final thing I'd like to mention in 
applications is in retail systems. 
This is a current project of Computer 
Power & Light. We've done the General 
Ledger, we have already done a payroll 
package and we've done some mailing 
list packages. We have finished up a 
sales anaylsis and marketing survey 
package and we're working on order 
entry, invoicing, aging of receivables, 
and payables package. 

The person who got us into that whole 
business is Harry Margulies. Harry is 
the owner of Beverly Stereo and 
Electronics, which is one of the 
venerable firms in Los Angeles. They 
were in it very early on when stereo 
and hi-fi was much the way micro- 
computers were a year ago — very much a 
new thing. Now he has a large number of 
employees with varying pay modes plus a 
tremendous inventory problem 
controlling the large number of items 
that a stereo store handles and all 
kinds of other things where a micro- 
computer could save a lot of time and 
money. Harry, right now, is running 
our payroll system, which handles the 
payroll for all of his employees 
weekly. He also uses our mailing 
system, which is part of the word 
processing packaging, to do direct mail 
campaigns. 

Just to give you a brief description of 
the payroll program... it maintains a 



data base with employees' names and 
whether they're on an hourly rate or 
salary or commission or get a 
guarantee. It has all of the tax 
algorithms in it, not the tax table. We 
worked back from the tax tables and 
figured out what the algorithms were. 
They match in every case. It 
automatically will select the list of 
employees at pay day so you can run 
through and just tell whether he was 
there that day or that week or whatever 
and it prints the checks. It does the 
quarterly reports, the year end reports 
and it updates the data base. 

So that's some of the applications, 
some of the things we've done. It 
maybe fleshes out some of the words 
like "limited only by your imagination" 
or "this thing will balance your 
checkbook" or "play Star Trek" or 
whatever. I hope I've given you some 
feel for the kinds of things we're 
doing. 

Limitations 

Now I'd like to talk briefly about the 
limitations. I'm going to tell you the 
jobs we turned down. And that I think 
any self- respecting micro- computer 
dealer should turn down. 

They fall into two categories. One is 
that the job is too complex. The 
software is just too complex and any 
decently written package would so swamp 
the cost of the micro-computer that you 
might as well, since the cost of the 
machine is in the noise anyway, buy a 
mini-computer, a faster and bigger 
machine. That may sound heretical but 
that's it folks. 

The second category is that in some 
cases micro- computers are just too 
slow, or the storage is too limited. I 
mean we've had people coming in with a 
check made out for $2,000.00 who 
actually needed 128 megabyte disk 
packs. 

Here are some of the ones we've turned 
down. Medical Group Accounting. A 
doctor would come in and say "Hi, I 
work with five other doctors in my 
building and I'd like you to. ..I've 
heard about these micro-computers and 
I'd like you to do a system that'll 
compute all of the Medi-Cal and 
Medicare payments, all the insurance 
reports, keep all of my appointments, 
age my receivables, keep all of the 
patient records, and... " you know, 37 



WEST COAST COMPUTER FAIRE 



258 



BOX 1579, PALO ALTO CA 94302 



other assorted jobs. I think the 
medical thing is going to be a tough 
one to crack and we're going to have to 
work on it over the next few years. 
But right now I don't see any 
micro-computer really providing a cost 
effective solution to the entire 
medical problem. 

The second one we turned down was 
scheduling classes for a school. I 
don't know if you're familiar with what 
it takes to do that. You might have a 
thousand students and 300 teachers and 
275 classrooms and 6 periods per day 
and 1200 different courses. We had 
several people come in, from local 
private schools especially, who said 
"I'd love to have one of these 
micro-computers and this is what I want 
it to do. Build a master schedule, 
sign up the students into various 
blocks once the master schedule has 
been built, then print out rosters of 
every class so the teacher on the first 
day of class knows who's in his class. 
Plus, the room assignments for the 
students. And then every marking 
period I want all the grade reporting 
with class by class averages and 
department averages and all of that." 

That kind of an application will hurt 
the industry if we attempt it right 
now. Because people are going to say 
it doesn't work. I'm convinced that it 
won't work right now. 

The third area that we've avoided, that 
I feel represents a limitation in the 
micro- computer in a business area that 
we're all interested in, is 
point-of-sale terminals and other 
on-line or real time applications. It 
brought down a company by the name of 
Singer and I don't expect many of the 
micro-computer companies to attack that 
one right away. The micro-computer is 
ideal for it but there are some other 
problems. I don't know how I'd like to 
handle a phone call from a customer who 
calls up and says there are eight 
people waiting in line to buy something 
and the machine isn't working right. I 
think there are so many other factors 
in this that we had better tread 
carefully before we all... with new 
equipment .. .put in on-line real time 
systems. Even though I know the 
equipment can do it , we have to solve 
some other problems. We have to mature 
a little bit as an industry before we 
tackle that one I think. 



Other Considerations 

Finally, the last topic— some of the 
factors in our experience that, as a 
retail store, meeting businessmen and 
being out there amongst them, we've 
discovered that are very, very 
important and that aren't immediately 
obvious to the person who's delighting 
over the instruction set of an 8085 
chip or something. 

Service . One of them is service. Do we 
emulate IBM? Do we say to our 
customers "if anything goes wrong pick 
up the phone and we'll be there in an 
hour". To some extent, we have to do 
that. If we are telling a businessman 
that he's going to place his life 
savings, the hard work of himself and 
his wife, and the success of his 
business on a little black box with 
your name on it that he's going to plug 
into the wall, we better really think 
twice about service. And, that's one 
of the biggest areas that we find our 
energies going into. 

There are some nice things that 
micro-computers have going for them. 
One of the approaches we use is that 
instead of taking a service contract, 
which is expensive relative to purchase 
price (12$ of the purchase price of the 
equipment, per year) we say a micro- 
computer is so small you can just tuck 
it under your arm and throw it into the 
back of your car after work and bring 
it on down to the store and we'll fix 
it while you wait. Which is what we 
do. You can't do that very well with a 
System 32 or a Vydek word processor. 
So, there are some distinct advantages 
to being in the micro end of this but 
service is going to remain a big 
issue. 

Support . Another one is support. I 
don't care how "canned" a package is, 
the phone rings continuously for the 
first three weeks that the system is 
sitting in a businessman's operation. 
You have to have people on hand who can 
answer those questions, who can find 
bugs in programs if they exist. That 
one's a real sleeper. Having enough 
people on hand all the time who can 
answer those phone calls and straighten 
things out and can also modify packages 
as they need to be modified. 

Software Tools . The third area is 
software tools. All the little things 
that the big guys have that we're just 
starting to develop. Things like 
utilities for sorting and data entry 



WEST COAST COMPUTER FAIRE 



259 



BOX 1579, PALO ALTO CA 94302 



and formatting. This is another area 
where Computer Power & Light has been 
working. Writing machine language sorts 
for the Micropolis disk BASIC and 
writing machine language data entry 
packages that prevent you from entering 
a four digit zip code. Things that 
prevent you from entering a part number 
using digits when it's expecting 
alpha-numeric characters. Things like 
that. It's a big area because when 
you're out in the business world, you 
know, the secretary might have been 
hired last week and doesn't know a 
computer from a Datsun . 



Training . The fourth area that we have 
always been strong in, and that we feel 
is important, maybe others may not 
agree... is training. We say that our 
training is better than Xerox's, and 
we've got the affidavits to prove it. 
It's an area in which we had some 
experience. The people who are part of 
Computer Power & Light who were 
successful teachers earlier in their 
careers have expended great effort in 
designing training sessions and courses 
that are effective. Our classes are 
not an afterthought, as they are with 
so many other computer companies. 
They've taken a lot of our resources, 
but we feel that they give us a pretty 
good advantage in dealing with the 
problems and remaining profitable in 
this industry. 



I hope my remarks have given each of 
you some insight into the realities of 
the low- cost business computer 
"revolution". I'll gladly answer any 
question you may have. Thank you. 



* * * * 



WEST COAST COMPUTER FAIRE 



260 



BOX 1579, PALO ALTO CA 94302 



MICROLEDGER - COMPUTERIZED ACCOUNTING FOR THE BEGINNER 
Thomas P. Bun, MBA, MSEE, 2171 Sharon Road, Menlc Park, CA 94025 



Abstract 

MICROLEDGER is a General Ledger system, re- 
duced to the absolute essentials. Written in 
'BASIC, it employs only two files, Chart of 
Accounts and Journal. It will run in 8 kilo- 
bytes of user memory. 

The package is based on a foolproof , step- 
by-step procedure, designed with the novice 
computer user in mind. Some familiarity with 
simple accounting practices is required. The 
documentation includes a ready starter Chart 
of Accounts for the small business user. 

After entering data, changes are easily 
made , both to the Chart and to the Journal . 
Even after posting, adjustments may be made 
promptly, both to the Profit and Loss State- 
ment and to the Balance Sheet. 

Decision problem for business accounting 

Small business, just like its large enter- 
prise counterpart, faces an early decision in 
setting up its accounting practice. Should it 
first deal with the most urgent parts of its 
detail procedures, like inventory, receivables, 
payables? Or should it in the first place, set 
up an overall framework for its entire accoun- 
ting? This latter alternative corresponds to 
the proper organization of the general ledger 
as the first step. The detail procedures, then, 
follow as mosaic stones in a picture, whose 
major outlines already have been properly de- 
fined. 

The purpose of MICROLEDGER is to supply 
this overall framework for the small business 
accounting. To choose this alternative is, 
therefore, equivalent to the TOP-DOWN systems 
approach, as opposed to the BOTTOM- UP approach. 
In this way, it is easier to design procedures 
that do dovetail together. The final goal, a 
totally automated comprehensive system, is made 
easier to achieve, since it can now be attained 
step by step. When a new module is set up, no 
change has to be made in old modules, since the 
general framework has been set up first. 

General Ledger packages 

There were hundreds of excellent general 
ledger packages available in the market. The 
need for a greatly simplified new package, like 
MICROLEDGER, arose when inexpensive microcom- 
puters suddenly became available to thousands 
of small businesses that could not afford to 



use computers before. The existing general 
ledger packages were designed for more elabo- 
rate machines and for users with more resour- 
ces. Typically, their use required people with 
computer background and training; not unfre- 
quently, a package would require 15 or 16 files 
to be set up and manipulated. Complex procedu- 
res and lengthy operating manuals were invol- 
ved. Most of todays microcomputer users would 
simply keep away from them, because they are 
too difficult to understand, set up and run.- 

Organization of MICROLEDGER 

The new package is set up in the form of six 
'BASIC programs. According to the particular 
hardware - and corresponding 'BASIC version - 
the programs may be stand-alone or chained. 
Each program is intensely interactive, main- 
taining a "conversation" with the user and 
leading him to the next step. 

LEDGER1 is the input program for the Chart 
of Accounts file. This is the general ledger 
master file. 

LEDGER2 is the. input program- for "the Journal 
file. This is the transactions file of the 
system. See an example, Fig. 1 in the Appendix. 

LEDGER3 lists both files, to help the user in 
checking them out and to supply audit trails 
for a complete story of all transactions. 

LEDGER4 runs the trial balance, displays the 
result in a table and then allows the user to 
ask for posting the 'transactions to the led- 
ger, Fig. 2, top part, in the Appendix. 

LEDGER5 reports the Profit and Loss Statement 
for the period covered by the journal. An 
example is shown on Fig. 2, bottom part. 

LEDGER6 reports the Balance Sheet at the 
closing date. A balance sheet is shown in 
Fig. 5 of the Appendix. 

A dual drive diskette device is recommended, 
in order to enable the user to keep the six 
programs on one drive, on a protected dis- 
kette, while the two data files, the Chart 
of Accounts file and the Journal file, are 
kept on another diskette on the other drive. 



WEST COAST COMPUTER FAIRE 



261 



BOX 1579, PALO ALTO CA 94302 



RESTRICTIONS 

The price to pay for such a greatly- 
simplified setup is relatively small. The 
account numbers are kept to 3 digits and 
must obey to a predetermined structure: 

101-199 Current Assets 

201-299 Non-Current Assets 

301-399 Current Liabilities 

401-499 Long-Term Liabilities 

501-599 Owners Equities 

600 Retained Earnings 

701-799 Revenue Accounts 

801-899 Direct Expense Accounts 

901-999 General and Administrative 
Expense Accounts 

Fig. 4 

The number of journal entries is only 
limited by the capacity of the diskette. A 
typical device, like a Micropolis floppy 
diskette, could contain 10,000 transaction 
entries. This is much more than would be 
actually required and recommended for use 
in practice for a single posting. 

The final restriction is the fact 
that the system does not automatically 
handle a multiple department situation. 

EXTENTIONS 

MICROLEDGER was set up to allow for 
easy bypassing of this restriction. If a 
user would like to handle, a milt iple depart- 
ment situation, he can set up his Chart of 
Accounts for this, by using up to 10 acc- 
ounts for each purpose allowing for up to 
10 departments. 

Each department will have its own 
journal file. These will be kept on sepa- 
rate diskettes, with the same filename, 
but a physical label differentiating each 
one. 

At run time, the program asks for the 
name - now the department becomes identi- 
fied on the report for free. And the proper 
posting reference being employed, the led- 
ger now handles the multiple department 
situation correctly. 

Other extent ions will be added by 
COMPUMAX ASSOCIATES, the owner of the 
system, by the development of additional 
modules. The Accounts Receivable and the 
Accounts Payable modules are being de- 
veloped currently. These future packages 
can be run both as stand-alone applica- 
tions and as preprocessors to MICROLEDGER 
since their output files are compatibe in 
format with the MICROLEDGER journal file. 



ADVANTAGES TO THE USER 

Many small business users may set up this 
package with the sample Chart of Accounts as 
supplied. The sample chart is condensed from 
many actual small business users charts. This 
alone may, frequently, justify its employment. 

The way the chart is set up, it is very 
easy to make small changes, additions and de- 
letions for coustomization to any particular 
requirement . 

The balancing outputs reported at posting, 
and at printing the statements, help a great 
deal in detecting inconsistencies in the actu- 
al figures entered. 

Once the necessary adjustments are deter- 
mined by the user, these can be effected very 
easily, by the use of the update options in 
the programs. These allow for insertion, change 
and deletion of any data item. 

After the printout is finally acceptable 
to the user, it becomes an ideal frontispiece 
for a month of actual records. The printout is 
solid, clear, readable. It will be welcome by 
tax inspectors, I. R.S. auditors, accountants, 
and - particularly - by the user himself. 

The employment of consistent and perma- 
nent accounting practices, month after month, 
take away the drudgery from the bookkeeping 
chore. Instead, it becomes a pleasant and 
rewarding occupation, a useful tool for the 
.decision making by the. small business owner. 

SUMMARY 

Two premises were employed in the design 
of MICROLEDGER: 

- keep it as simple as possible, in con- 
trast to extisting general ledger 
packages with too many options, files 
and complications; 

- make it, nevertheless, powerful enough 
to accomodate the needs of a general 
small business user community. 

It is obvious that many tradeoffs had to 
be made to accomodate these premises, that 
so often lead to conflicting requirements. 

It is the hope of the author of this 
paper, that the product described met both 
these goals satisfactorily. 

It is a pleasant duty to offer my best 
thanks for the significant assistance received 
during the development of this product, from 
the persons listed under ACKNOWLEDGMENTS. 



WEST COAST COMPUTER FAIRE 



262 



BOX 1579, PALO ALTO CA 94302 



APPENDIX 



PL0ADG-LEDGER3' 

ENTER 1 FOR CHART OF ACCOUNTS LISTING > 2 FOR AUDIT TRAIL OF JOURNAL ? 2 
AUDIT TRAIL OF JOURNAL FOR PERIOD FROM 07-01-77 TO 07-31-77 



NBR.OF TRANSACTIONS IS 32 
REC.# DATE TRANSACTION 

1 07-18-77 MICRODISKETTES TO STOCKROOM 

2 07-01-77 J . STERN PAYMENT 

3 07-29-77 CREDIT SALES THIS WEEK 

4 07-04-77 CHECK * 226 U.C.B. 

5 07-01-77 J.EUING NOTE 

6 07-17-77 E. P. R.I. CONTRACT 

7 07-31-77 MONTHLY PRODUCTION 

8 07-31-77 UNFINISHED WORK 

9 07-31-77 PARTS SENT TO SHOP 

10 07-20-77 BARCLAYS BANK DRAFT 

11 07-20-77 ROCKWELL INTERN 'TL STOCK 

12 07-22-77 NEW ROOF ON SHED 

13 07-23-77 NOVA 3 COMPUTER 

14 07-31-77 DEPRECIATION-BUILDING 

15 07-31-77 DEPRECIATION-FURNITURE 

16 07-31-77 DEPRECIATION-MACHINES 

17 07-31-77 'JULY SALES 

18 07-31-77 CONSULTING INCOME 

19 07-31-77 ROYALTIES EARNED 

20 07-31-77 PRODUCTION 

21 07-31-77 STOCKROOM 

22 07-31-77 SUPPLIES 

23 07-31-77 JULY PAYROLL 

24 07-31-77 SOCIAL SECURITY 

25 07-31-77 AMORTIZATION EXPENSE 

26 07-31-77 DEPRECIATION EXPENSE 

27 07-31-77 BILLS PAYABLE 

28 07-31-77 MONTHLY OFFICE BUDGET 

29 07-31-77 RENTALS PAID 

30 07-31-77 FEDERAL TAXES PAID 
READY 



ACC'T NBR. 


AMOUNT 


145 


1628 


115 


133 


130 


29603 


110 


-100 


120 


361 


125 


1151 


135 


8282 


140 


5569 


145 


6342 


225 


4516 


210 


5000 


250 


2668 


270 


12951 


241 


-1845 


261 


-4260 


271 


-352 


710 


242677 


720 


80110 


730 


3959 


810 


20193 


820 


106429 


830 


87308 


840 


42015 


845 


4191 


910 


2615 


920 


6447 


320 


58418 


930 


23900 


975 


4000 


980 


11414 



Fig.l 



WEST COAST COMPUTER FAIRE 



263 



BOX 1579, PALO ALTO CA 94302 



BALANCE SHEET - MIDWESTERN MANUFACTURING CO 
DATE OF 7 - 31 - 77 



CURRENT ASSETS 



CASH IN BANKS 
CASH ON HAND 
NOTES RECEIVABLE 
CONTRACTS RECEIVABLE 
ACCOUNTS RECEIVABLE 
RESERVE FOR DOUBTFUL A/R 
FINISHED GOODS INVENTORY 
WORK-IN-PROCESS INVENTORY 
MATERIALS-PARTS INVENTORY 
PREPAID EXPENSES 



NON-CURRENT ASSETS 

INVESTMENTS 

OTHER NON-CURRENT ASSETS 
ACCUM. DEPRECIATION-BUILDINGS 
LEASEHOLD IMPROVEMENTS 
ACCUM . DEPREC . -LEASEHOLD IMPR 
FURNITURES AND FIXTURES 
ACCUM. DEPREC. -FURNIT.S FIXT. 
MACHINERY '£ EQUIPMENT 
ACCUM. DEPREC. -MACHIN.& EQUIP 
AUTOMOTIVE EQUIPMENT 
ACCUM . DEPREC . -AUTOMOT . EQU IP . 
OTHER INTANGIBLES 



4000 

738 

1770 

10203 

90541 

< 1215 ) 

29020 

35934 

35315 

9547 

TOTAL CURRENT ASSETS 



215353 



18626 




20139 




( 1845 


) 


17392 




( 6808 


) 


14189 




( 12840 


) 


62951 




( 21455 


) 


3994 




( 2050 


) 


1944 




OTAL NON-CURRENT ASSETS 



94237 



CURRENT LIABILITIES 

NOTES PAYABLE 

ACCOUNTS PAYABLE 

ACCRUED LIABILITIES 

FEDERAL & OTHER INCOME TAXES 

CURRENT INSTALLMENTS ON LOANS 



LONG-TERM LIABILITIES 
LONG-TERM DEBT 

OWNERS EQUITIES 

COMMON STOCK 
CAPITAL SURPLUS 
RETAINED EARNINGS 



TOTAL ASSETS 



24600 
78954 
13307 
12839 
192 
TOTAL CURR. LIABILITIES 



73551 
TOTAL LONG-TERM LIABILITIES 



58154 
23066 
25427 
TOTAL OWNERS EQUITIES 



310090 



129892 



73551 



TOTAL LIABILITIES 3 OWNERS EQUITIES 



106647 
310090 



Fie. 2 



WEST COAST COMPUTER FAIRE 



264 



BOX 1579, PALO ALTO CA 94302 



PLQADG"LEDGER4 



TRIAL BALANCE FOR PERIOD STARTING 7-1-77 TO 7-31-77 



EXPENSES 


313512 


REVENUES 


326746 


INCOME 


13234 






TO ASSETS 


71652 


TO LIAB, 


5S418 






TO R. E. 


13234 



ASSETS BALANCE LJAB.+O.E. 
DO YOU WANT TO POST, Y OR N? Y 
30 JOURNAL TRANSACTIONS POSTED TO CHART OF ACCOUNTS FILE. 

READY 

PLOADG " LEDGERS " 

P. & L. STATEMENT PROGRAM 

ENTER COMPANY NAME (UP TO 30 CHARACTERS ) , START DATE OF FISCAL YEAR (MMDD 
Yr>? "MIDWESTERN MANUFACTURING CO, " ,010177 

PROFIT S LOSS STATEMENT - MIDWESTERN MANUFACTURING CO. 
FOR PERIOD FROM 1-1-77 THROUGH 7-31-77 
REVENUES 



SALES 

OTHER OPERATING REVENUE 

INVESTMENT AND ROYALTY INCOME 



242677 

80110 

3959 



TOTAL REVENUES 



326746 



EXPENSES 

MERCHANDISE FOR INVENTORY 
MATERIALS PURCHASED 
SUPPLIES PURCHASED 
DIRECT LABOR 
LABOR OVERHEAD 



20193 

106429 

87308 

42015 

4191 



TOTAL DIRECT EXPENSES 



AMORTIZATION EXPENSE 
DEPRECIATION EXPENSE 
OFFICE EXPENSES 
RENTALS PAID 
TAXES PAID 



TOTAL G-X.A. EXPENSES 



2615 

6447 

28900 

4000 

11414 



260136 



33376 



TOTAL EXPENSES 



INCOME 



READY 



Fie. 3 



313512 



13234 



WEST COAST COMPUTER FAIRE 



265 



BOX 1579, PALO ALTO CA 94302 



REFERENCES 



ACKNOWLEDGMENTS 



The following textbooks were used during 
the development of MICROLEDGER: 

Earl A. Spiller: "Financial Accounting" 
Irwin, 1971 

Richard Mattesich"Accounting and Analy- 
tical Methods", Irwin, 1964 

John Dearden Hj F.Warren McFarlan: "Manage- 
ment Information Ststems", Irwin, 1966 

Anthony, Dearden and Vancil: "Management 
Control Systems", Irwin, 1965 



These books might be found at the libra- 
ries of the University of Santa Clara 
and Stanford Business Schools. 



The following persons were of significant 
assistance during the development of the 
MICROLEDGER. 

Paul J. Terrell, as President of Byte, Inc. 
served as inspiration and support from the 
beginning. 

Mike D. Lipschutz and John K. Borders of 
Microcomputer Software Associates - MSA, 
contributed with valuable advice. 

Boyd Wilson and Mike Black, of the Mountain 
View Byte Shop, contributed with many hours 
of patient help in setting up the hardware. 

Zulmira McMorrow of the McMorrow Engineering 
Group, one of the first users, completed the 
first large-scale data entry. 




ABOUT THE AUTHOR 



Thomas P. Bun 

President 
CompuMax Associates 
505 Hamilton Avenue 
Palo Alto, CA 94301 



Thomas P. Bun was born in Budapest, 
Hungary. Having graduated in general 
engineering, with a major in planning, 
from the Budapest Polytechnical Univer- 
sity, he worked in Europe and Latin Ame- 
rica, finally settling in California. 
Mr. Bun obtained an M.S. degree from Stan- 
ford University, majoring in Digital Sys- 
tems/Computer Science, and an M.B.A. 
from the University of Santa Clara. 



Positions occupied by Mr. Bun have included: 
senior systems analyst with Stanford Research 
Institute; project manager in microcomputer 
application design with Rockwell Internatio- 
nal; manager- systems with Light S.A., the 
largest privately owned electric power uti- 
lity in Latin America; director of Reduto, 
a Brazilian engineering company; president 

of.. ..the Latin American Astronomical League; . 

member of the Council of the National Com- 
mission for Space Activities of Brazil; 
management science analyst with I. S.I. Cor- 
poration and product engineer with Smith- 
Corona Marchant Corporation. Since January 
1977, Mr. Bun is president of CompuMax 
Associates, a Palo Alto-based software 
house, specializing in the production of 
application packages for microcomputers. 



WEST COAST COMPUTER FAIRE 



266 



BOX 1579, PALO ALTO CA 94302 



Money for Your Business-Where to 
Find It, How to Get It 



Don Dible 

468 Robert Rd. 



Life Insurance A loan based on the cash value of your life 
insurant policies can be a low-interest source of money Many 
policies provide for automatic loans from the insurance earner at 
interest rates far below the prime rate charged by commercial 



Vacaville CA 95688 banks. 



One of the recurrent problems that plagues most owner- 
managed businesses is the shortage of adequate capital. In the case 
of new businesses, this problem can be severe. 

Promising small businesses traditionally have relied upon such 
sophisticated money sources as investment bankers, venture 
capitalists,, and federally licensed and leveraged Small Business 
Investment Companies (SBICs) for their equity capital needs. In 
today's market, these sophisticated investors have many options 
from which to choose. Regardless of market conditions, their 
objective continues to be the maximization of return on invest- 
ment, consistent with intelligent risk analysis. 

Their first option is'the purchase of securities in publicly traded 
companies at bargain basement rates. Their second option is the 
private placement of growth capital in young, but already estab- 
lished, companies of demonstrable merit. In a tight money market, 
the terms of such an arrangement may be very attractive for the 
investor. The investment option representing the highest risk, 
obviously, is in financing the start-up company. Given the first 
two options, a private placement with a start-up company is, I 
think you'd agree, a most unlikely choice as an investment vehicle. 

What about banks? Surely, you can get a personally endorsed 
loan for your business from the friendly loan officer at your 
commercial bank. Not necessarily. In evaluating the financial state- 
ment of any business, a banker will pay particular attention to the 
ratio of debt to equity capital. A general rule is that you cannot 
borrow more money than has been invested as equity capital. 
Furthermore, most bankers are not eager to lend money to new 
businesses at all, preferring to wait until there is at least some 
history of profitable operation. 

How, then, can you assemble the resources you'll need to get 
started and to keep you going until you begin to turn a profit? 
Take heart; there is hope. There are, in fact, four different money 
sources that can now help you stretch your business dollars: 1) 
personal financial resources, 2) trade credit, 3) customers, 4) 
economizing. 

Personal Financial Resources 

Many of us significantly underestimate the value of our personal 
resources when taking a financial inventory. Let's look at some of 
the more obvious (and not-so-obvious) resources you may have: 

Home In the recent inflationary period, the value of practically 
all residential real estate has appreciated substantially. If you have 
owned your own home during this period, you are indeed fortun- 
ate. The difference between the current value of your home and 
the balance outstanding on your mortgage may represent an 
equity asset of between $20,000 and $50,000. You might consider 
converting this asset to cash by 1) taking a second mortgage in the 
amount of your equity, 2) refinancing your mortgage, 3) subdivid- 
ing your lot and selling part of it, or 4) selling your house and 
moving into an apartment. Every year tens of thousands of people 
go into business using "house money" to bankroll their ventures. 



WEST COAST COMPUTER FAIRE 



Stocks and Bonds You may own stocks and bonds that, for a 
variety of reasons, you do not wish to sell. Such instruments make 
ideal collateral for loans, and you can borrow anywhere from 40% 
to 60% of their current value, depending on the lender. 

Credit Cards and Personal Credit When you prepare vour finan- 
cial business plans, you will surely want to take the fullest'possible 
advantage of your credit worthiness. At the same time, you will 
want to minimize the amount of money that you have to take out 
of the business to meet your personal financial needs. This is 
particularly true when the business is just getting started and every 
dollar in the treasury is needed to finance business growth. During 
this period, personal credit cards of all types and descriptions can 
give you just the extra leverage you need. Instead of drawing a 
heavy salary in the first year of operation, supplement your 
modest cash draw with the judicious use of credit cards. 

Credit cards come in a great variety of classifications: bank 
cards such as Master Charge and BankAmericard, travel and enter- 
tainment (T & E) cards such as Diners Club and American Express, 
as well as cards for department stores, oil companies, airlines, and 
so on. With a good credit record, it should be no great feat for you 
to secure enough credit cards to give you a personal line of 
revolving credit in excess of $30,000. 

Now, obviously, you can't buy a carload of raw materials for 
your business with your bank credit card, but you can cover a lot 
of your personal expenses with it — as well as such business expen- 
ses as transportation, food, and lodging. With a little thought, I'm 
sure you can come up with a variety of ways to employ credit 
cards in financing your particular business. 

While we're on the subject of personal credit, you should give 
serious consideration to arranging for the installment purchase of 
an automobile and other major consumer items before you start 
your business. You'll find it a lot harder to qualify for this kind of 
financing after you've started. Lenders tend to worry a great deal 
about the financial stability of new small businesses and their 
founders. Your credit application looks a lot better when, under 
"Current Employer," you show that you have been employed 
with "Solid as a Rock, Inc." for the last six years instead of with 
"Shaky at Best" for the last six weeks. 

Relatives and Friends I happen to consider relatives and friends 
to be extremely valuable personal financial resources. Where else 
can you find lenders who, simply because they like you, will 
advance money on anything as risky as starting a new business? 
However, do yourself and your lenders a favor. Document their 
loans. Draw up a formal note showing interest charged and the 
dates on which principal and interest are payable. You never know 
when a personality problem may arise that could precipitate 
calling the loan. That can become awfully messy. 

Take the case of the young man whose rich aunt loaned him 
$100,000 with which to start his business. The formality of a loan 
agreement was ignored. Six months later the aunt died. The heirs 
then forced the entrepreneur to liquidate his business so that they 

267 BOX 1 579, PALO ALTO CA 94302 



could each get their share of the aunt's estate. 

Relatives and friends can also come in handy as cosigners. Let's 
assume that you apply for a loan and the lender decides that your 
qualifications are marginal. The availability of a financially strong 
cosigner can swing the balance in your favor. Your relatives and 
friends can prove to be very important personal assets. Don't 
overlook them in your financial planning. 



Trade Credit 

According to a U.S. government study, trade credit constitutes a 
33% larger factor in financing the business community than 
that represented by bank loans. Clearly, every company treasurer 
should give serious consideration to trade credit in financing a 
small business. 

Customarily, suppliers provide trade credit as an inducement to 
their customers to do business with them. Although credit terms 
in most industries are extended on a net 30-day basis, overall 
averages may stretch this to 45 days, 60 days, or even longer 
depending on the condition of the overall economy and the 
particular industry involved. Under the guise of "cash manage- 
ment," many companies make a habit of vigorously enforcing 
their collection policies while simultaneously treating their 
accounts payable with cavalier disregard. 

Just how you handle your payables is your own business. But 
you should be aware of the fact that not everybody in business 
makes a habit of paying bills the day the first invoice arrives. 

When it comes to making use of trade credit as a tool in 
financing your business, I recommend that you establish with your 
suppliers, in advance of purchase, the best extended credit terms 
you can negotiate. Depending on how hungry your suppliers are 
for your business, you may be able to arrange extremely attractive 
terms. Securing competitive bids will greatly improve your bar- 
gaining position. However, once you have agreed to terms of 
payment, honor your commitment rf you value your credit. 
Nothing is more difficult than trying to operate a business when 
your suppliers will ship to you only on a COD basis. 



Customers 

There are many ways in which customers can be induced to help 
you finance your business. The degree to which they are vHlling to 
do so depends on the extent to which you enjoy a monopoly on 
the goods or services that you offer. In other words, no one will 
pay in advance if he can get essentially the same goods or services 
from another supplier under more liberal credit terms. However, if 
you have the only game in town, you may be in a position to get 
your customers to finance your business. 

As you know, the telephone company, electric and gas com- 
panies, the post office, and a host of government monopolies 
require deposits in advance (independent of your credit- 
worthiness), so that you may enjoy the benefits of their services. 
The same kind of policy may be applied in the operation of 
certain small businesses and selected industries. 

A San Francisco Peninsula electronics company, which sells 
a patented device available nowhere else, provides a good illus- 
tration of customer financing. The company's customers are 
required to make a deposit of one-third of the purchase price 

WEST COAST COMPUTER FAIRE 



when the order is placed. Another one-third is payable on delivery, 
and the balance is due in 30 days. As a result of these favorable 
terms of sale, this company has been able to finance a highly 
satisfactory growth rate while experiencing almost no problems 
with cash flow. 

An extreme example of this type of financing is the case in 
which the customer is required to pay the full purchase price at 
the time the order is placed. You may be surprised to learn that 
you have been financing certain of your own personal suppliers on 
this basis for years. I am referring, of course, to magazine publish- 
ers. If you take a three-year subscription to a magazine, you may 
get the first one or two issues on credit based on your promise to 
pay. However, in order to continue receiving the magazine, you 
must pay the subscription bill, even though you won't receive 
your final shipment for almost three years. 

Hugh M. Hefner, publisher of Playboy magazine, played this 
customer-finance game with admirable success when he initially 
offered lifetime subscriptions for $100. Obviously, he needed the 
money to finance his growth. Had the subscribers to some of the 
early issues bought $100 worth of Playboy stock instead of a 
subscription, they could have picked up a tidy profit. 

In many industries, including a number of the construction 
trades, it is usual for the suppliers to receive progress payments 
when previously agreed-upon levels of project completion are 
achieved. Highway construction, aircraft assembly, and other 
large-scale projects are often financed in this way. 

A special form of customer financing occurs in a number of 
service and manufacturing industries. Here the customer provides 
raw materials that the vendor transforms into finished goods. In 
the book printing trade, a publisher may supply the printer with 
paper; in a machine shop, the customer may provide the metal to 
be worked; and in a tailoring service, the customer may provide 
the cloth to be fashioned into a dress or a suit. In each case, the 
vendor avoids the expense of financing the purchase of raw mate- 
rials.- - 

Another way of getting the customer to pay in advance for 
goods or services is to establish some kind of "membership" 
arrangement. Here the customer may pay an annual fee for the 
privilege of attending meetings. Using a similar membership 
approach, some discount department stores require customers to 
pay a membership fee for the privilege of shopping there. 

A novel twist on this customer-backed approach to business 
finance is seen in physical fitness spas, dance studios, and other 
contract service organizations. Customers sign an agreement to 
purchase the service offered for a period of one or more years. In 
most cases, the intentions of the customer are honorable and 
sincere at the time he executes the contract. However, many 
people lose interest in fitness and other self-improvement pro- 
grams after a short time, and the incentive to pay the installments 
on the service contract may falter. In anticipation of these long- 
range collection problems, the original holders sell the contracts to 
finance companies at a substantial discount. While the average 
individual may balk at paying the original contractor for services 
not used, he is more likely to pay a finance company when 
notified that it has taken over his contract. The result is that the 
original contractor gets a handsome chunk of cash almost immedi- 
ately after the customer signs the contract, whether or not the 
customer continues to use his facilities. Once again, the customer 
has financed the business, albeit indirectly. 

268 BOX 1 579, PALO ALTO CA 94302 



I Economizing 

I In preparing your pro forma financial statements, you probably 
I allocated quite a bit of money for office equipment and other 
I capital expenditures. If you figured on buying new equipment, 
I figure again. Used equipment is what you want. That way, you 
■ may find that you need a lot less cash than you originally thought. 
Forget the rosewood paneled office with the Italian marble-topped 
desk, too; that comes later. And most financially strapped entre- 
preneurs quickly learn the delights of night coach and special tour 
package rates to save a few dollars when traveling. There are many 
other ways to economize in the operation of your business; we'll 
get to them shortly, but first let's concentrate on where to find 
used equipment. 

1. Used equipment dealers may handle anything from office equipment 
to laboratory test equipment to cash registers to display cases for 
butcher shops and retail stores. You'll find these dealers listed in the 
Yellow Pages of your telephone directory under such headings as 
"Used Equipment Dealers," "Second Hand Dealers," and "Suiplus 
Merchandise." You'll also find dealers listed under generic headings 
such as "Office Furniture— Used." 

2. Dealers in new merchandise invariably find themselves stuck with a 
variety of goods that cannot truly be represented as new. "Demon- 
strator" and "loaner" equipment (provided for the temporary use of 
customers who are awaiting delivery of new equipment or who arc 
having their own equipment repaired) fall into this category. These 
dealers may also have floor samples, warehouse- and freight-damaged 
goods, and obsolete-but-serviceable rental equipment available at a 
substantial savings. 

3. Bankruptcy and liquidation auctions provide an opportunity to get 
some real bargains. To secure information on where and when 
auctions are to be held, consult the Yellow Pages of your telephone 
directory under "Auctions" or "Auctioneers." Many auctioneers 
maintain mailing lists of interested clients and send out brochures 
announcing forthcoming auctions. 

You may also obtain information on bankruptcy auctions by 
contacting the bankruptcy court in your area. You'll find this court 
listed under "U.S. Government" in the White Pages of your tele- 
phone directory. 

4. Bankrupt companies that receive protection under Chapter 1 1 of the 
Bankruptcy Act are very likely to be interested in liquidating some 
of their assets. If you are lucky enough to learn about such a 
company in your own industry, you are in a unique position to fill 
your equipment needs quite reasonably. Bankruptcy filings are 
announced in the legal newspapers of record serving various com- 
munities across the country. Also, when a large company in a 
particular industry files for voluntary bankruptcy under Chapter 1 1, 
the trade journals serving that industry will usually carry mention of 
this fact. Upon learning of such a bankruptcy, don't hesitate to call 
the company involved to determine whether the owners are inter- 
ested in selling some of their assets. 

5. Now and then major corporations simply decide to get out of a 
particular industry and shut down one of their divisions. A friend of 
mine who has his own company read about such an instance in a 
trade journal. He purchased a $100,000 (price when new) piece of 
test equipment for a mere $7,000 cash. Then he called a leasing 
company and received $45,000 for the same equipment when he 
agreed to lease it back from them over a five-year period. He realized 
an immediate cash infusion of $38,000. 



6. The United States Government is the single largest consumer of 
goods and services in the world. Not surprisingly, it also disposes of 
enormous quantities of surplus goods on a more or less continuous 
basis. For information on the sale of surplus government equipment 
at locations all over the world, write to the Department of Defense 
Surplus Sales Office, Box 1370, Battle Creek, Michigan 49016, and 
the Assistant Commissioner for Personal Property Disposal, Federal 
Supply Service, General Services Administration, Room 926, Crystal 
Mall, Building 2, Washington, D.C. 20406. Local representatives of 
these agencies are listed in the White Pages of your telephone book 
under "U.S. Government." 

7. Classified ads provide a simple, convenient, and inexpensive means of 
finding used equipment. You can consult the listings under the head- 
ings of interest to you, or you may want to advertise the fact that 
you are looking for a particular item. In some instances, trade jour- 
nals carry classified listings, thereby permitting you to confine your 
search for specialized items to the more likely sources of supply. 

Barter Bartering your goods and services is a primitive-but-fun 
way to save money. It also affords certain tax advantages. I know 
of a carpenter who remodeled an orthodontist's home in exchange 
for having his daughter's teeth straightened. I also know of a 
plumbing contractor who paid for his appendectomy by plumbing 
his surgeon's vacation home. Radio stations have been known to 
exchange advertising time for consumer merchandise to use as 
premiums. The opportunities are unlimited. 

Do It Yourself When the cash supply is limited and the money 
for meeting a payroll is nil, you simply have to learn to do things 
yourself that you might otherwise hire someone else to do. You 
have undoubtedly heard that many small businessmen work 80 or 
more hours a week. Many of these companies are also husband- 
and-wife operations, where the wife works virtually without pay 
until the business starts turning a profit. This kind of toil may not 
sound like much fun, but it does save money. 

Then, too, a lot of businessmen, in response to economic 
pressure, find that they have many talents and skills they never 
appreciated. A janitor used to empty their wastebasket when they 
worked for Big Business, Inc., but they now take care of this 
occupational specialty themselves. On opening a restaurant, they 
may find that they possess the dexterity of a short-order cook. 
The may learn how to write advertising copy, how to repair their 
machinery, or how to operate a typewriter and a ten-key adding 
machine. 

In some cases where a specialist is needed but there is no money 
with which to hire one, the entrepreneur may have to take courses 
at a local college to learn the skill himself. It is often surprising 
what you can learn to do when your economic survival is at stake. 

Free Publicity Free publicity can do wonders for your business 
—and the price is right. You don't have to hire a public relations 
firm on retainer to get it, either. What you do need is guts enough 
to call a newspaper or trade journal editor, a radio announcer, or a 
television personality and explain your story. If you have some- 
thing to say that will be of genuine interest, educational value, or 
amusement to the audience served by the medium you have 
selected, you have a good chance of getting publicity. 

One businessman I know sent out new-product releases describ- 
ing a $200 device to 12 trade journals serving his industry. He 



WEST COAST COMPUTER FAIRE 



269 



BOX 1579, PALO ALTO CA 94302 



received more than 1,500 inquiries in response to articles carried 
in the two journals that printed his story. His total cost was less 
than $10. 

I could doubtless catalogue dozens of other ways of saving 
money in your business, but I'd like to conclude by suggesting a 
different point of view. It is easy to become preoccupied with 
saving nickles and dimes instead of figuring out how to make 
dollars. Nothing succeeds like a company with the right product at 
the right price at the right time. The electronics giant Hewlett- 
Packard was started in a garage in the 1930s. The company grew 
rapidly with limited invested resources for a very simple reason: 
the founders were selling unique and superior products with high 
profit margins to a market eager to buy. Go thou and do likewise. 



RECOMMENDED READING 

Baty, Gordon B. Entrepreneursbip: Playing to Win. Reston, Va.: 
Reston Publishing Company, Inc., 1974. 

Brady, Frank. Hefner. New York: Macmillan Publishing Co., 
Inc., 1974. 

Deiner, Royce. How to Finance a Growing Business. New York: 
Frederick Fell, Inc., 1965. 

Putt, William D., ed. How to Start Your Own Business. Cam- 
bridge, Ma.: The Massachusetts Institute of Technology, 1974. 



WEST COAST COMPUTER FA! RE 



270 



BOX 1579, PALO ALTO CA 94302 



SELLING YOUR HARDWARE IDEAS i 
HOW TO START AND RUN A MANUFACTURING ORIENTED 
COMPUTER COMPANY 

by Thomas S. Rose 
President, Astro Electronics Co, 
P.O. Box 1429 
Alameda, California 94-501 



Introduction 

So, you're thinking about starting 
your own business. You have a great 
idea for a piece of hardware that will 
revolutionize computers , Not wanting 
anyone else to profit from your ingenu- 
ity you decide forming your own company 
is the best thing to do. If that is 
your inclination I have one piece of 
advice for you; D0N?TJ Your chances of 
succeeding are about 50-50. Worse than 
that, though, your chances of failure 
with possible bankruptcy and personal 
financial disaster are about the same. 

If you are reading this you proba- 
bly are not interested in taking my 
original advice. Consequently, I will 
give you some advice that should help 
improve your chances of success. Some 
of the important things you should know 



Let us say for example that you were 
going to produce a memory board with 4K 
of RAM. Now that does not sound very 
unique. If you sell that 4K for $20,00, 
though, you have got something. Note 
that the physical characteristics of 
the product are not the only things 
which may make it unique , 

Of course, the best kind of unique- 
ness is a big breakthrough. Something 
akin to the iiivention of the vacuum 
tube or the transistor is what I have 
in mind here and with an idea like that 
your chances of success dramatically 
improve (but are still not certain). 

Consider next the size of your mar- 
ket. In the case of hobby and personal 
computers your market is large and 
growing. A walk through the Computer 
Paire will convince you of that. I 
have read estimates that indicate there 



about are financing, government regula- ,«* vc iC<aw eo ^ 1U ai, cs whh xnaicaxe xnere 
tions, production, marketing, organiza- are 35fOOO/~l_7 or 50,000/f~2_7 personal 
tion structure, bookkeeping, and eth- computer installations in this country. 



ics. 

Is This Really For Me? 

The first question you should ask 
yourself is what are the chances I will 
succeed? There is very little point in 
going through all of the trouble of 
starting up if you know in advance that 
you are doomed to failure. As you con- 
sider the product you intend to sell 
the first indication that it may fail 
is the existence of similar products on 
the market. For example, there is no 
way you can manufacture an 8080 micro- 
processor and compete with the likes of 
National Semiconductor, Fairchild, and 
the handful of others that already make 
8080' s, I should really say there is 



These estimates are not current. By 
now there are likely to be many more 
and millions of installations are fore- 
seeable by the 1980*s. The buyers are 
there. 

Price is a factor in determining the 
size of your market. There are more 
people who can fit a $5,00 item into 
their budgets than there are who can 
fit a $500,00 item in* Not everyone of 
those 50,000 or whatever people will 
buy your product but a lot more will 
consider it if its price is low. 

Now, bring all of these factors to- 
gether. Take a rough guess at how many 
people will buy your product at the 
price you want to sell it. Now, fig- 
ure out roughly how much it will cost 



one way you might compete. You could if you to make the product. Next, divide 



you had a few million dollars to invest, 
a top management, production, and mar- 
keting team and a bit of luck. If you 
are like me, though, you have none of 
the above. Even so, if you had the 
dollars you would probably just want to 
retire (I would anyway) and if you had 
all those top people they would tell 
you not to try competing with the Mg. 
boys. Therefore, you should try to 
find a product which is largely unique. 



your sales estimate by 2 or more and 
multiply your cost estimate by 2 or 
more (these revised estimates will 
probably prove more accurate than the 
originals) and determine whether or not 
you will make a profit. If it looks 
like you will lose money do not bother 
going into business (unless you are a 
philanthropist dedicated to all of your 
fellow computer hobbyists). 



WEST COAST COMPUTER FAIRE 



271 



BOX 1579, PALO ALTO CA 94302 



Financing . . . , 

If you have gotten to this point and 

still believe you have something worth- 
while your first step in starting busi- 
ness is to get together some working 
capital. There is no manufacturing 
business on Earth I know of that can 
come into existence without money/ 3y» 
In the case of manufacturing the saying 
"It takes money to make money- is an 
ironclad rule. 

How much money will it take to get 
started? This will vary from business 
to business. You will need money to 
satisfy requirements * ^ de P°^ ts * or . Qr 
various government agencies, to pay lor 
raw materials, to meet payrolls, and 
for a variety of miscellaneous expen- 
ses. Additionally, most businessmen 
embarking on a new venture will make at 
least one very serious and costly mis- 
take during the first two years of 
business. If you do not want your 
business to end when that mistake is 
made you should reserve something to 
cover it. After you have determined 
what you will need double it or triple 
It and that is the extent to which your 
business should be financed. 

The first place to look for financ- 
ing is to yourself. Personal savings 
may be your first financial source. 
Some people may want to mortgage their 
property, sell off other investments, 
or adopt a more frugal lifestyle. Un- 
less you are deeply committed to your 
business you should have strong second 
thoughts about mortgaging^yo_ur prpperty. 
Ask yourself if it is worth the loss ol 
your home to gain the independence and 
other potential rewards that come from 
owning and operating your own business. 
pS Some people it is and by all means 
they should take this action. Selling 
off other investments is relatively 
easier than mortgaging your home. 
Acain, though, you must determine for 
ylurself how badly you want to go into 
business. Keep in mind that the money 
you invest in your own firm is one of 
the riskiest investments you will ever 
make in your life. All but the most 
poverty stricken people should be able 
?3 the adjustment to a more frugal 
lifestyle. If you are unwilling to 
take those steps I do not believe you 
have the determination necessary to 
succeed in your own business. If you 
think you are unable to change your 
lifestyle then you have not scrutinized 
your budget closely enough and I suggest 
you take g another look at it. Trim the 
fat and perhaps some of the lean. 
If your business requires more 

WEST COAST COMPUTER FAIRE 



financing than you alone can provide you 
will have to turn to outside sources. 
You may want to consider relatives or 
friends. Be careful! If your business 
is a success and you failed to allow 
relatives or friends to invest they may 
be upset that they could not share un 
the rewards. If you do include them 
and your business fails they will also 
be upset. Your relations and friends 
may be more willing to assist you with 
financing than institutions which know 
relatively little about you and have no 
track record to look at. Depending upon 
how you relate to your friends and rel- 
atives you may or may not want to ask 
for their financial participation. 

The two major institutions that most 
people think about in connection with 
small business financing are banks and 
the Small Business AdministrationtSBA). 
Most of the SBA's aid is in the form of 
loan guarantees for loans actually made 
by a bank. It is usually easier to get 
an SBA loan if your financial situation 
is not particularly strong. In most 
cases it is best to provide as much fi- 
nancing yourself as you can. Even if 
that is not enough by itself a financial 
institution will look more favorably 
upon an entrepreneur who has committed 
a substantial part of his own fortune 
to the enterprise., An essential in- 
gredient in securing financing from an 
institution is a comprehensive formal 
business plan. This may also be use- 
ful to you in encouraging or discour- 
aging yourself in a relatively objec- 
t ive way as you consider your new 
business. As an aid to preparing your 
business plan it is absolutely esser. al 
that you purchase the book, Up. Your Own 
Organization by Donald M. Dible£ *J<> 
I guarantee that as a novice entrepre- 
neur this will be the best purchase 
you will make. . 

In addition to the suggestions Mr. 
Dible has for a business plan you will 
find an extensive list of financing 
institutions. Among those he suggests 
which may not come readily to mind are 
consumer finance companies, credit 
unions, the Economic Development Admin- 
istration, venture capitalists, and 
some thirty-five or so others. His 
book also tells you the procedures for 
securing financing from these insti- 
tutions. If you cannot finance your 
business with all of the various sour- 
ces available your business probably is 
not worth financing. 



The Government 

The government is a monster. You 



272 



BOX 1579, PALO ALTO CA 94302 



will have to deal with three sets of 
government; federal , state, and local. 
With each set you will have a plethora 
of agencies, bureaus, and administra- 
tions that want some form of control 
over your business. With every agency 
you deal you have a couple of stra- 
tegies you may employ. The first I call 
the compliance and conciliation method. 
The second I call the adversary method. 
In the first strategy you make every 
attempt to comply with the written laws 
and regulations that apply to you. ad- 
ditionally you get to know the bureau- 
crats you deal with and by so doing se- 
cure the best treatment you can get. 
For example, when I applied for a resale 
certificate (business liscence) from the 
California State Board of Equalization I 
was told I would have to deposit a sub- 
stantial amount of money as security for 
payment of sales taxes. This was one of 
those items I had not budgeted. To have 
continued in business after making a se- 
curity deposit of that size would have 
been impossible. I made one phone call 
to a man responsible for setting deposit 
requirements and succeeded in getting my 
security deposit requirement cut in half, 
I was not beligerent and explained cooly 
and rationally to the man why I felt the 
size of the deposit was excessive. Do 
not antagonize the bureaucrats. They 
are like German shepherds. If you poke 
sticks at them they get mean and will 
make things very difficult for you. If 
on the other hand you pat them gently on 
the head they will be friendly to you. 
The adversary method is a bit more 
difficult but you may reap rewards in 
the long run. By the way I only recco- 
mend this method for those of you who 
elect the proprietorship and partner- 
ship forms of organization and not the 
corporate form. Furthermore, I am not 
advocating that you do anything illegal. 
In the adversary method you make the 
assumption that the government has no 
business messing around in your business. 
You do not register in any way with any 
government bureaus or agencies unless 
the laws clearly require it. If they do 
not know you exist they cannot come a- 
round and bother you. Even if they know 
you are there and they start pestering 
you you should be well aware of your 
rights. You are not required to give 
anyone any information which may be used 
against you in court. Since as a prac- 
tical matter any information you give 
may be used against you you need not 
give anyone any information about your- 
self or your non-corporate business 
which is really an extension of your- 



self. The reason this method is diffi- 
cult is that it is largely based on your 
natural rights as expressed in the U.S. 
Constitution. Most judges are much 
more interested in the complex words in 
some statute than the simple and clear 
words in the Constitution and conse- 
quently do not accept Constitutional 
arguments. Nonetheless, signifigant 
savings may be realized if you do not 
have to apply for endless permits and 
pay never ending fees. 

There are a number of agencies you 
need to be concerned about. First and 
foremost of these is the Internal Reve- 
nue Service (IRS). If you are using 
strategy one you should go to the IRS 
and ask them for all of theliterature 
they have that is relevant to your si- 
tuation. You should explain the type 
of business you do. Secondly buy the 
Proceedings of the First Animal West 
Coast Computer Faire and read the ar- 
ticle on pge 202 by Kenneth S. Widel- 
itz^"2_7. In the article Mr. Widelitz 
gives you some ideas for tax savings 
that you may employ. You should sub- 
scribe to the Wall Street Journal/ 5 7 
and read their regular collumn and fre- 
quent articles on changing IRS policy. 
You should buy the book Small Time Op - 
erator by Bernard Kamoroff/, 6_/ for his 
tax saving ideas and general tax com- 
ments . After Up_ Your Own Organization 
this is the second most valuable book 
to buy. You should hire an accountant 
who is a specialist in taxes. This is 
especially important as your sales and 
income grow. If you employ the second 
strategy I suggest you find an alter- 
native bookstore and read some of their 
tax avoidance (not evasion) literature. 

Other agencies of the federal govern- 
ment you may find yourself dealing with 
are the Occupational Safety and Health 
Administration (OSHA), the Federal Trade 
Commission (FTC), and the Federal' Com- 
munications Commission (FCC) among many 
hundreds of others. 

If you have employees in your busi- 
ness, especially in a factory or on an 
assembly line you will have to be con- 
cerned with OSHA. Under a major federal 
act they administer certain safety codes. 
The FTC deals with warranties and truth 
in advertising. For a fine discussion 
of warranties I suggest you read another 
article by Mr. Widelitz starting on page 
72 of the First Faire Proceedings/ 2 /» 
If any of your products involve long 
distance communications (farther than 
from one point in a building to an- 
other point in the same building rough- 
ly) the FCC may be involved. 



WEST COAST COMPUTER FAIRE 



273 



BOX 1579, PALO ALTO CA 94302 



Of course, I cannot begin to list 
all of the agencies which may concern 
you in your business. If you have any 
doubts about your relations with feder- 
al government agencies I strongly sug- 
gest that you do some research on the 
agencies and that you hire a lawyer 
competent in federal regulation. 

At the state level (in California) 
you have two agencies which will cause 
you the most concern. The first is the 
State Board of Equalization (SBOE), 
The SBOE primarily deals with the ad- 
ministration of the sales tax. If you 
are buying materials that are to be re- 
sold you will need a resale certificate 
issued by the SBOE, This will allow 
you to buy the materials without paying 
sales tax and requires you to collect 
sales tax on all final sales you make. 

The second agency is the Franchise 
Tax Board (FTB), The FTB is to Cali- 
fornia what the IRS is to the U.S. The 
advice I gave for dealing with the IRS 
largely applies to the FTB as well. 

If you have any questions about any 
other California agencies or agencies 
in other states you should enlist the 
services of a lawyer. 

Regulations at the local level vary 
widely. Localities generally impose 
zoning, thereby restricting certain ac- 
tivities such as manufacturing to cer- 
tain specific locations. If your com- 
pany's name is other than your own you 
will need to file a fictitious business 
name statement usually with the county 
clerk. 

Production 

This is probably the easiest topic 
for people who are knowledgeable about 
computers. For the most part produc- 
tion considerations are just common 
sense. Still t ere are a few tips I 
can give you. 

When you design your product try to 
use parts which are widely available. 
Every time you use a custom part your 
product will cost more and it will be 
more difficult to design around custom 
parts. Also, when these type of parts 
are used you are more likely to exper- 
ience delays in production. 

Try to watch your costs. Shop a- 
round for the best price possible for 
all of your materials. This is espe- 
cially true if you have lots of time 
devoted to your business and not much 
money. 

There are a number of quantitative 
techniques available to production man- 
agers. Generally, these are only use- 
ful in large production facilities. In 

WEST COAST COMPUTER FAIRE 274 



any case I do not claim to be an expert 
in this area and for further informa- 
tion you should consult one of the texts 
available on this subject. 

Marketing 

Marketing systems generally consist 
of three elements; distribution, pricing, 
and promotion. Distribution deals with 
the questions of how your product gets 
from you to your customers. In the per- 
sonal and hobby computer industry you 
have essentially three choices; sales to 
middlemen or wholesalers, to retailers, 
or directly to the ultimate consumer. 
To the best of my knowledge wholesalers 
are an insignif igant force in this part 
of the electronics industry. If you 
sell to retailers you cannot charge as 
much as you would if you sold directly 
to consumers. However, you will have 
larger amounts of sales at one time. 
With the proliferation of computer 
stores in the past couple of years this 
can be an attractive distribution chan- 
nel. If you sell directly to ultimate 
consumers you can sell units at a higher 
price but you will have higher expenses 
as well. It will cost you more per unit 
to process an order for one unit than 
for twenty units. 

Pricing is an important considera- 
tion. If your price is too high you 
will not sell anything and if it is too 
low you will lose money. You should 
consider the prices your competitors are 
charging. Due to rules of the market- 
place the price they charge is probably 
about the price that i« right -for youv 
Your price may vary around that stan- 
dard because of differences in such 
things as quality and features. 

What most people think of when they 
think of marketing is promotion or one 
of its categories, advertising. Promo- 
tion involves not only advertising but 
the areas of publicity and personal 
selling as well. It is my opinion that 
you cannot through promotion make some- 
one buy something he is not inclined to 
buy anyway. You can make someone who is 
unaware of your product or its features 
more knowledgeable about it. Publicity 
is favorable news or information about 
your products for which you do not pay. 
Some publications even solicit informa- 
tion about your products which will ap- 
pear for free. Publicity is clearly the 
best deal available in the promotion 
area. Personal selling is most useful 
if your sales are to retailers. It may 
also be important if you are dealing 
with a large number of customers at one 
time or a relatively high priced item. 



BOX 1579, PALO ALTO CA 94302 



I think that salesmen are born and not 
made. I know that I could not sell a 
cure to a dying man. If you have the 
knack you may want to do some personal 
selling yourself . If your business re- 
quires personal selling and you do not 
feel qualified you should hire salesmen 
who are able. 

In advertising you have two major 
considerations; how much and where? For 
a manufacturer about the only place for 
advertising is in one or more of the 
magazines that now cater to the growing 
group of computer hobbyists. The broad- 
cast and newspaper media reach too broad 
an audience including many people who 
are not interested in computers (yes, 
some people could not care less). They 
are not cost effective. Advertising is 
not cheap. Prices for a small black and 
white ad in a typical small systems mag- 
azine will range from $200 to $300 and 
will go up to around $2000 for a full 
page color ad. Still, you will reach a 
large number of people who may be inter- 
ested in your product this way. If your 
advertising budget is large enough you 
can enlist the aid of an advertising 
agency. The nice thing about an agency 
is that they cost you little or nothing. 
They make their money by receiveing dis- 
counts from the media that they place 
your advertising in. 

Form of Organization 

I think far too much attention and 
worry is paid to this topic. Unless ^ 
your special financing or tax needs dic- 
tate otherwise (your accountant can help 
you here) you should organize as a sole 
proprietorship. Enough said. 

Bookeeping and Accounting 

Since my training is in accounting I 
could go on at quite some length about 
this topic. I will not. As long as the 
records you keep show clearly how much 
your company owns, owes, what your in- 
vestment is, how much you sell and what 
it costs you to sell it you will be in 
good shape. If you want to be able to 
handle more complex topics such as de- 
preciation, double entry accounting, de- 
ferrals and accruals, and periodic re- 
porting I would suggest that you contact 
your local community college for infor- 
mation about their accounting courses. 
One or two nights a week for one semes- 
ter will usually qualify you to handle 
all of the day to day accounting tasks. 
I For additional help you should seek the 
I services of an independent accountant. 

y WEST COAST COMPUTER FA1RE 



Ethics 

Your primary obligation is to maxi- 
mize your profits. The free enter- 
prise system is based upon profit max- 
imization. Note that profits are not 
measured in dollars alone but may be 
measured in such intangibles as perso- 
nal satisfaction and happiness. As 
long as you do not use force or fraud 
to make your profits I believe you are 
operating ethically. 

Conclusion 

I can only begin to tell you about 
starting your own business in this 
short space. There is much more you 
will need to know. You can gain much 
of that knowledge by reading the mater- 
ials I have suggested. Your local com- 
munity college can be a great resource 
if you will enroll in some of the busi- 
ness courses they offer. Ultimately, 
though, the best teacher is experience. 
In that experience I wish you the best 
of luck. 

References/Bibliography 

1. Alan Kaplan, "Filling the Need for 
Consumer Software", Computer Deci - 
sions , October, 1977, p. 14, 

2. Jim C. Warren, Jr., ed., Conference 
Proceedings of the First West Coast 
Computer Faire . 

3. When I refer to money throughout the 
paper I am using the definition "A 
medium of exchange". This differs 
considerably from the legal defini- 
tion which is important in some tax 
matters. 

4. Donald M. Dible, Up_ Your Own Organ- 
ization, 1974, Entrepreneur Press. 
Available through most bookstores. 

5» The Wall Street Journal is available 
on most newstands and subscription 
information is available in all 
issues . 

6. Bernard Kamoroff, C.P.A., Small Time 
Operator , Revised Edition, 1977, Bell 
Springs Publishing Company. Availa- 
ble from major bookstores. If you 
have trouble finding it write to the 
publisher at P.O. Box 322, Layton- 
ville, California 95454 or have your 
book dealer contact Bookpeople, 2940 
7th Street, Berkeley, California 
9W0. 



75 



BOX 1579, PALO ALTO CA 94302 



BRINGING YOUR COMPUTER BUSINESS ON-LINE 



Stephen Murtha 
D/A Associates 
3 Altarinda Dr. 
Orinda, CA 94563 
(415)-254-7100 



Elliott MacLennan 

MacLennan § Lillie 

2855 Mitchell Dr. Suite 130 

Walnut Creek, CA 94598 

(415)-938-5120 



Robert Jones 
Interface Age 
13913 Artesia Blvd. 
Cerritos, CA 90701 
(213)-926-6629 



This is an abstract of a panel 
discussion which we have given to 
a large number of people consider- 
ing entering the microcomputer 
business or have already entered, 
but are not beyond the infancy stage 
We will examine some of the legal, 
tax, financial and tactical consid- 
erations which must be considered 
for the venture to be a success. 

The first topic of discussion 
here is the form which the business 
should take. Should it be a sole 
proprietorship, partnership or a 
corporation? This question can 
only be answered intelligently by 
examing the legal and tax environ- 
ment, the nature of the business 
and the way these factors inter- 
play. 

A microcomputer business can be 
one of three types; manufacturing, 
retailing or consulting. Each "cat-" 
egory has its own unique require- 
ments in terms of capital, labor, 
etc. to run it. Consideration must 
be given to the number of workers 
needed to run the outfit. It must 
be determined if they can be hired, 
or if they will require an owner- 
ship interest in the business. In 
addition to this, the capital re- 
quirements of the business must be 
dtermined and the most appropriate 
funding secured. 

There are four main business 
forms used by small firms today. 
They are the sole proprietorship, 
partnership, Subchapter S corpor- 
ation and Subchapter C corporation. 
At this point lets briefly review 
the salient characteristics of 
these forms from a legal and tax 
point of view as there is no one 
form which is automatically best 
for a small business. 

A sole proprietorship presents 
no real legal or tax complexities. 



With the exception of some simple 
legal formalities such as register- 
ing with local or state government 
when operating under a fictitious 
name etc. , a person may operate as 
a sole proprietor with relative 
ease. From a tax point of view, 
the sole proprietor simply reports 
any income less allowable business 
expenses as he would any other in- 
come on his tax return. 

A partnership is not much dif- 
ferent than a sole proprietorship 
except in the number of people in- 
volved. As with the sole propri- 
etorship, there are no complex 
legal requirements. Even the part- 
nership agreement may be oral. 
However, this is often a hidden 
trap. The nature of running a 
joint venture requires that all 
aspects of running the business 
such as share of profits and losses, 
capital and work contributions, etc. 
be agreed on in writing. Since 
there is no legal requirement that 
this be done, many partnerships ne- 
glect this step, only to be torn a- 
part by disputes later on. For tax 
purposes the partnership pays no 
taxes itself, it simply acts as a 
conduit for income and the partners 
report their share of the income 
on their tax returns. 

A Subchapter S corporation is a 
unique form of business created by 
federal tax law. From a legal point 
of view it is the same as any other 
corporation and must comply with all 
of the laws of the states in which 
it incorporates and does business. 
From a tax point of view it is very 
similar to a partnership in that 
the income flows on through the 
corporation to the shareholders with- 
out being taxed at the corporate 
level. This is especially useful in 
the start-up phase of a new business 



WEST COAST COMPUTER FAIRE 



276 



BOX 1579, PALO ALTO CA 94302 



where there is often a net operating 
loss as it can be passed on to the 
shareholders instead of being buried 
in the corporation. This tax treat- 
ment is for federal taxes only and 
the corporation can usually have no 
more than 10 shareholders in the 
start-up stages. 

The final form is the Subchapter 
C or regular corporation. A corp- 
oration is very different from a 
partnership or sole proprietorship. 
State and federal laws impose a con- 
siderable number of formalities and 
regulations on corporations having 
to do with everything from bookkeep- 
ing, corporate minutes, to the sale, 
transfer of stock, etc. Since the 
corporation is legal entity separ- 
ate from the owners , there are con- 
siderable tax and accounting consid- 
erations which far exceed those of 
other forms. However, this same 
separation leads to tremendous tax 
advantages in certain situations. 

Raising the capital for your 
business requires a fair amount of 
work and planning. The first step 
is to make out a business plan. 
The business plan must include de- 
tailed projections of income and 
expenses, pi ant and equipment re- 
quirements, working capital, in- 
ventory, etc. for as far into the 
future as can reasonably be done. 
When completed, the well drawn 
business plan will provide a doc- 
umented answer to any question an 
investor might have. 

Considering that most people 
have never done this type planning 
before, help is often required. 
There are three main sources; your 
attorney, your accountant and the 
many federal , istate, and local gov- 
ernment agencies set up to aid small 
businesses . 



One of the better of these is SCORE 
(Service Core of Retired Executives) 
which is part of the Small Business 
Administration. 

Choosing the investment vehicle 
and the potential investors are 
closely related topics. Both the 
investor and the company have the 
same goal in mind, namely profit- 
ibility. However, the investor will 
want maximum protection of his in- 
vestment while the company will want 
maximum flexibility in the running 
of the company. Often these two 
short-term goals will be in conflict 
and create problems. 

There are two main ways of finan- 
cing a business; debt and equity. 
All investment vehicles are a var- 
iation or a combination of both. 
Common and preferred stock are own- 
ership vehicles and as such tend to 
dilute ownership and control. They 
pay no fixed interest or dividend. 
Debt, such as notes, bonds, etc. 
offer the investor a fixed rate of 
interest, but no ownership or share 
of the profits. Many debt instru- 
ments are convertible into equity 
instruments to overcome this limita- 
tion, particularly in high growth 
f i rms . 

It is of critical importance to 
note here that the company must 
make sure that the proposed invest- 
ment transaction complies with all 
securities law including both Fed- 
eral and State. Serious penalities 
including civil and criminal await 
the company and its officers that 
fail to observe these regulations, 
even when dealing with friends and 
relatives or with very small firms. 

The time and money invested in 
weighing these factors will be re- 
turned many times over and will 
free you up to make your business a 
success . 



The material presented m this article is 
intended for the reader's general informa- 
tion. The authors request that the reader 
consult professional advisors prior to 
applying this material to his or her spec- 
ific situation. 



WEST COAST COMPUTER FAIRE 



277 



BOX 1579, PALO ALTO CA 94302 



TOWARD A COMPUTERIZED SHORTHAND SYSTEM 

W. D. Maurer, Professor 
Department of Electrical Engineering and Computer Science 
George Washington University 
Washington, D. C. 20052 



Abs tract 



By a computerized shorthand sys- 
tem is meant a system having the fol- 
lowing components: 

(1) a language of abbreviations 
for common English words; 

(2) a microcomputer program 
which accepts English words as input, 
in either abbreviated or unabbreviated 
form, and prints them out in unabbre- 
viated form; and 

(3) a typewriter connected to a 
microcomputer, upon which is resident 
the above-mentioned program. 

The purpose of a computerized 
shorthand system is to allow the user 
to take dictation "at speed." As the 
dictated words are spoken, the typist 
enters words and their abbreviations 
into the system, which types out words 
in unabbreviated form. The result is a 
one-stage system of transcribing, in 
contrast to the two-stage systems pre- 
sently encountered. 

Fundamental Design Considerations 



The idea of computerized short- 
hand started very simply as follows: 
With microcomputers smaller than, and 
cheaper than, typewriters, what en- 
hancement to the capabilities of a 
typewriter could be effected by im- 
bedding a microcomputer within it? 
Perhaps if the user could strike the 
keys b_z, and the typewriter would type 
out the word bus iness -- or £m for 
government , and so on — the capabili- 
ties of typewriters would be enhanced. 

It is clear even from this mini- 
mal description of the idea that it 
resembles that of shorthand; so let us 
look at the existing systems of short- 
hand to see if they could be adapted 
for a microcomputer system. Ordinary 
(Gregg) shorthand as it is used today, 
of course, involves a number of sym- 
bols which do not appear on a type- 
writer. But there are several short- 
hand systems which involve alphabetic 
characters, such as ABC Shorthand [1] 
or Speedwriting [2]. 



WEST COAST COMPUTER FAIRE 



A cursory glance at the principles 
of these systems, however, uncovers an 
immediate difficulty. The idea of any 
of the presently commonly used shorthand 
systems is to use a symbol to represent 
a sound or a collection of sounds. In 
many cases the same symbol is used for 
several sounds and thus the same combi- 
nation of symbols is used for several 
words. Even were this not the case, 
however, the same symbol or combination 
of symbols would certainly be used, in 
such a system, for words whose sounds 
are the same (homonyms) . 

A microcomputer system, on the 
other hand, must be able to read a 
shorthand word and tell immediately wha 
longhand form is represented by that 
word. (We have here one of the basic 
drawbacks of microcomputers when com- 
pared to the human brain.) Thus it is 
clear that a new shorthand system must 
be developed for this application. 

Before describing what such a new 
shorthand system ought to be like, let 
us briefly examine another alternative 
to shorthand, namely stenotyping. This 
Involves a machine having a keyboard 
like a typewriter, but with many fewer 
keys. Any combination of keys may be 
struck at once, and each key that is 
struck causes a letter to be printed on 
a roll of paper tape. At a later time, 
this tape can be transcribed to ordi- 
nary English. The fact that combinations 
of keys may be struck is a distinct ad- 
vantage of this system; it allows re- 
cording at 240 words per minute or more 
to be done, whereas ordinary typing 
takes place at 70 words per minute or 
so . 

The code which is used in steno- 
typing, like shorthand, is a sound-based 
system. Not every letter of the alphabet 
is represented by a single key on the 
machine; those which are not are repre- 
sented by combinations of keys. However, 
in all cases, it is the sound of the 
letter, rather than its written form, 
which is represented. A serious draw- 
back of stenotyping is the time it takes 
-- normally two years -- to learn the 
code . 



278 



BOX 1579, PALO ALTO CA 94302 



Can stenotyping be adapted into 
a computerized shorthand system? First 
of all, one would have to devise spe- 
cial codes for the various homonyms. 
The drawback mentioned in the previous 
paragraph now becomes an advantage; if 
you have already spent two years lear- 
ning the code, a few more months re- 
learning new codes for homonyms do not 
represent appreciable extra effort. 
This has, in fact, been done, and 
there are computer systems which per- 
form the transcription (see, e. g., 
[3]). 

In practice, stenotyping is not 
used in the great majority of business 
applications involving the taking of 
dictation. This is undoubtedly due to 
the amount of time it takes to learn 
the code and the attending scarcity of 
(and, therefore, high salaries paid 
to) people who know the code. We are, 
on the other hand, concerned with a 
system which can be used in business 
applications, much as word-processing 
systems are used. 

The fact that a system such as 
we are describing must be word- (and 
possibly phrase-) based, rather than 
sound-based, presents us with two im- 
mediate problems. One is that, obvi- 
ously, not every English word can be 
separately represented by a shorthand 
form -- the dictionary is too big for 
that. The other is that learning 
shorthand for words is obviously quite 
a bigger chore than learning shorthand 
for sounds, because there are a lot 
more words than there are sounds. 

The solution to the first of 
these problems is to represent only 
the most common words by shorthand 
forms. Any word that is not represen- 
ted by a shorthand form can simply be 
typed out in longhand. Thus the com- 
puter is always either in shorthand 
mode, in which it is translating 
shorthand into longhand, or in long- 
hand mode, in which it is simply 
copying out longhand. 

Surprisingly, this turns out to 
be the solution to the second problem 
as well. Since any word (even a word 
which has a shorthand form) can be 
typed and printed out in longhand 
form, it is possible to use a com- 
puterized shorthand system with only 
a bare minimum of knowledge. One 
learns the first few shorthand forms 
and then starts typing, using only 
these shorthand forms, and typing 
everything else out in longhand. As 
one learns more shorthand forms, one's 
shorthand percentage (and, therefore, 



WEST COAST COMPUTER FAIRE 



typing speed) increases. Thus anyone who 
has mastered ordinary typing skills can 
expect a slow but steady increase in 
typing speed attendant upon the learning 
of more and more shorthand forms. Mis- 
takes in shorthand are minimized by the 
constant application of a cardinal rule 
if you are not absolutely sure of the 
shorthand form in a given case, use 
longhand. 

Design Details 

Let us now look into the details 
of shorthand, treating the broadest 
outlines first. What is the most common- 
ly used key on a typewriter? Obviously 
the space bar. This key is used so com- 
monly, in fact, that in shorthand we 
would like to see if we can get away 
with not keying it at all. If every 
shorthand form were exactly three char- 
acters long, for example, hitting the 
space bar would never be needed; the 
computer program would simply read 
three characters at a time, look up the 
corresponding word, and then print that 
word, together with a space, either be- 
fore or afterwards. A little thought 
convinces us that the space should be 
typed beforehand, not afterwards, since 
words are sometimes followed by periods 
or commas. 

Such, a system, however, is much 
too inefficient. As long as no shorthand 
form is an initial substring of any 
other shorthand form, the computer can 
tell where a shorthand form ends. The 
most commonly encountered words may be 
represented by single keystrokes. Any 
key which does not represent a word in 
this way can be the first character of 
a two-character code. Any two-character 
combination of this kind which is not a 
two-character code can then be the first 
two characters of a three-character 
code, and so on. 

Another immediate problem is now 
apparent: How do we know which words are 
the most commonly encountered? Some are 
obvious — "the," "and," "of," and so on 
— but when we start to face the ques- 
tion of whether a particular word such 
as "this" or "that" should be represen- 
ted by a one-character code or by a two- 
character code, it is clear that some- 
thing more scientific is required. For- 
tunately, the frequency analysis of 
English words is a well-known subject, 
and many such analyses have been done. 
Unfortunately, almost all of these ana- 
lyses were done in connection with the 
teaching of children, and the materials 
analyzed were children's materials. 



279 



BOX 1579, PALO ALTO CA 94302 



One frequency analysis, however, 
namely that of Kucera and Francis [4] , 
satisfies our requirements. Besides 
having been constructed from writings 
meant for adults, it is a computation- 
al analysis which avoids the pitfalls 
of, on the one hand, counting all 
forms of a word as the same word (see 
[5] , for example) and, on the other 
hand, distinguishing between various 
forms of capitalization, so that Time, 
time, and TIME are counted as three 
different words, each with its own 
frequency (see [6], for example), In 
the particular case discussed above, 
Kucera and Francis tell us that "that" 
is considerably more common a word 
than "this." (This is plausible; we 
speak of "this table" and "that chair" 
but we also say "I know that he will 
come," and so on, so that "that" has 
two common meanings whereas "this" has 
only one.) In our system, "that" is 
represented by a one-letter code (x) , 
whereas "this" is represented by a 
two-letter code ( ts) . 

In order to see in a bit more 
detail what such a system should be 
like, let us, for the moment, ignore 
the codes of three or more letters. It 
is clear that there are several hun- 
dred possible two-letter codes, which 
already take quite a while to learn, 
so that the form of the overall scheme 
is determined to a great extent by the 
form of the typical two-character 
code. It seems natural that the typi- 
cal two-letter code should begin with 
the first 1 etter of the cbr'r espond Trig" 
longhand form. What does that leave us 
for one-letter codes? There are, first 
of all, the digits; then there are the 
letters (such as x) which are not the 
first letters of many common words; 
and finally there are the punctuation 
symbols. However, at least some of the 
punctuation symbols, particularly the 
period and the comma, are common 
enough that they ought to represent 
themselves; one ought to be able to 
produce a comma by typing a comma. 

Whatever a punctuation symbol 
represents ought to be much the same, 
in most instances, whether the compu- 
ter is in shorthand mode or longhand 
mode. However, there are two important 
exceptions. In longhand mode, typing a 
space signifies a space between two 
longhand words; in shorthand mode, 
however, spaces are not typed. Simi- 
larly, hyphens can appear, and often 
do appear, in longhand forms, where 
■they do not (or at any rate not near- 
I ly as much) in shorthand. Thus the 



space bar and the hyphen may be used as 
single-character codes. Similarly, the 
ten digits and the letters j , k, q, u, 
v, x, y, and z are used in our system as 
single-character codes. The codes and 
their corresponding longhand forms are 
as follows: 



2 


to 


3 


the 


4 


for 


5 


it 


6 


is 


7 


as 


8 


a 


9 


x.n 





was 


1 


I 



3 


be 


k 


he 


q 


at 


u 


on 


V 


of 


X 


that 


y 


by 


z 


his 


blank 


and 


minus 


with 



It should be noted that the word "I" is 
according to Kucera and Francis , the 
20th most common English word; it has 
been assigned the single-character code 
"1" and an alternate code " ij " as well, 
for use on typewriters which do not 
possess the "1" key. Of the other 19 
representations, some of them (2, 4, v) 
are strongly mnemonic, while others (3, 
8, 9, y, z) are slightly mnemonic. 

Any word that begins with j, k, q 
u, v, x, y, or z, and that has a short- 
hand form, has one beginning with some 
other letter. In our system, the two- 
character forms of this kind are as 
f o Hows : 



fy 


very 


ir 


your 


gb 


j ob 


iu 


you 


gi 


kind 


iy 


yet 


gj 


John 


oa 


usually 


gk 


keep 


od 


used 


gq 


quite 


oe 


under 


gs 


just 


og 


unders tanding 


gu 


knew 


oi 


united 


gw 


know 


oo 


upon 


xe 


year 


op 


up 


ig 


young 


OS 


us 


ik 


York 


o z 


use 



Note that f substitutes for v, o for u, 
i for y, and g for any of j , k, q, x, 
and z, as the first letter of a short- 
hand form. All other two-character 
shorthand forms start with the first 
character of the corresponding longhand, 
(The last two forms above are interes- 
ting. The form "ik" is marked for obso- 
lescence in a future version of the sys- 
tem; Kucera and Francis do not analyze 
phrases, but it seems obvious that 
"York" -- in this country, at least -- 
almost always occurs as part of the 
phrase "New York." The word "use" is an 
example of the opposite of a homonym, 



WEST COAST COMPUTER FAIRE 



280 



BOX 1579, PALO ALTO CA 94302 



that is, we have two words that are 
spelled the same but have different 
pronunciations -- "Use this tool" and 
"Put this tool to good use," for exam- 
ple -- and this causes no difficulty 
in the system at all; the same short- 
hand form, ojz, stands for both words.) 

Let us now ask where our forms 
of three characters and more are go- 
ing to come from. If we stick to the 
rule, implied by what we have said 
above, that a two-character code is 
always actually a two- letter code, 
then it follows that three-character 
codes of the form (letter, digit, 
letter) are always permissible. This 
gives us a wide variety of possible 
three-letter codes. Furthermore, 
since all words contain vowels, and 
since there are only six different 
vowels, we can let the choice of digit 
in such a form specify the choice of 
vowel. In fact, in our three-character 
codes, we use 2 to specify "a," 3 for 
"e," 4 for "o," and 5 for any of the 
vowels "i," "u," and "y , " all of which 
are less common. 

Let us now discuss forms of a 
word. It will clearly not do to type 
a word followed by s_, for example, to 
denote a plural, because the computer 
will take the s_ to be the start of the 
next word. However, it would also 
clearly be advantageous to be able to 
follow any shor thand-r ep res entible 
word by any of the three commonest en- 
dings -- -s , -ed, -ing — by striking 
only one key in addition to the short- 
hand. The solution we have adopted is 
only slightly difficult to learn: we 
use the key 6 for -s , 7 for -ed, and 
8 for -ing, to be struck as the second 
character of any shorthand form. It 
should be clear that this does not 
conflict with any of the other rules 
outlined above. 

We have to have a way of getting 
into longhand mode from shorthand 
mode, and vice versa, and the charac- 
ter we use for this purpose is the 
slash. The sentence above, for exam- 
ple, may be rendered in shorthand by 

/We have/2/have/8/way /v/getting 
into longhand mode from 
shorthand mode,/ /vice versa, 
/ 3/character we/oz 4t s/ pur pos e 
/63/slash. 

This is of course only one possible 
shorthand rendering, and a "minimal" 
one at that; it uses only the short- 
hand forms that have already been in- 
troduced in this paper. From an ori- 



ginal sentence of 144 characters we 
have produced a shorthand sentence of 
125 characters, obtaining a character 
count reduction of 13.2% and a typing 
speed increase (assuming a constant 
number of characters per second) of 
15.3%. In this connection it should be 
noted that any shorthand form is to be 
considered as learned only when the 
typist can produce it in context at an 
unreduced character speed (without stop- 
ping, however momentarily, to think of 
what the shorthand form is). 

If we were to represent the same 
sentence, using as many shorthand forms 
as possible in the abbreviation language 
we are using at the time of this wri- 
ting, we would obtain: 

wehv2hv8wyvg8eioln; ; hn/mode/ 
fm/short;hn/mode, / /vice versa, 
/ 3c3cweoz4tsp5p63/slasb/. 

This shorthand rendering is to be in- 
terpreted as follows: 



we we 


> 


(see below) 


hv have 


hn 




hand 


2 to 


blank 


and 


h v h av e 


blank 


and 


8 a 


3 




the 


wy way 


c3c 




character 


v of 


we 




we 


g8e getting 


oz 




use 


io into 


4 




for 


In long 


ts 




this 


; ; (s ee b elow) 


p5p 




purpose 


hn hand 


6 




is 


fm from 


3 




the 



This time, the shorthand sentence is 
made up of 85 characters, a character 
count reduction of 41.0% giving rise to 
a typing speed increase (again assuming 
a constant number of characters per 
second) of 69.4%. 

It must be noted that there. are 
actually two ways of getting from long- 
hand mode into shorthand mode, or vice 
versa, the other one being the semico- 
lon. This has the effect of not inser- 
ting a blank; thus "short/hn" (with the 
slash) corresponds to "short hand" (two 
words) whereas "short;hn" (with the se- 
micolon) corresponds to "shorthand" (one 
word). When we have a word, such as 
"longhand," which is made up of two 
words ("long" and "hand") each of which 
has its own shorthand form (ln_ and hn, 
respectively), we can use the semicolon 
twice, once to get into longhand mode 
and another time to get back into short- 
hand mode, without inserting a blank 
either time. 



WEST COAST COMPUTER FAIRE 



281 



BOX 1579, PALO ALTO CA 94302 



Semicolons are used mainly for 
prefixes and for suffixes other than 
-s, -ed, and -ing . We have learned 
above that p5p represents purpose ; 
p5p; ful is therefore purposeful . 
Similarly, hv is have , and so be;hv 
is behave . 

It should be clear that an ab- 
breviation language of this kind is 
extremely tolerant of the user with 
incomplete knowledge. If one forgets, 
for example, that the word "short" 
has the shorthand form s4t -- as this 
author did when typing out the above 
— it doesn't much matter; the typing 
speed increase obtained is only 69.4% 
instead of 73.5%. This is in marked 
contrast to the situation in natural 
languages, where, for example, not 
knowing the German word for "tele- 
phone" can be quite serious in Munich. 

Let us now consider the period. 
Most periods are at the ends of sen- 
tences, but many are not (as in a 
person's initials, for example). In 
our system, any period typed in short - 
hand mode is assumed to be at the end 



of a sentence; any period typed in 
longhand mode is not. In particular, 



when a period is typed in shorthand 
mode, it is automatically followed by 
two blanks (reflecting standard secre- 
tarial practice), and the next word is 
automatically capitalized. This is why 
the second form of the shorthand sen- 
tence above starts with a small w; it 
is assumed that the preceding sentence 
ended (as this one does) with a period 
typed in shorthand mo de . K period typed" 
in longhand mode simply appears as a 
period, without any side effects. 

What if the user needs a slash or 
a semicolon in the printed output? Our 
solution to this problem is to use a 
standard punctuation key , which is the 
key immediately to the right of the P 
on a typewriter (whatever symbol might 
appear on that key on an actual key- 
board). Typing this key (which we shall 
refer to as h since that is the symbol 
on our own trusty Selectric) followed 
by / or ; or, for that matter, by any 
punctuation character which appears in 
lower case on the given typewriter, 
causes that punctuation character to be 
printed out. 

For punctuation characters which 
appear in upper case (as, for example, 
the ones above the digits, or the co- 
lon) we have the standard capitaliza- 
tion key . This is the key to the im- 



mediate right of the semicolon, which, 
as before, we shall refer to as ' from 
■the character on our own typewriter. 



Typing ' before any key produces the 
capitalized version of the key; this in- 
cludes the letters, so that 'a produces 
A, for example. Typing %a , on the other 
hand, produces the ampersand, and, in 
general, typing h followed by a letter 
produces a punctuation symbol whose 
name (usually) starts with that letter 
or is otherwise mnemonically related to 
it, according to the following table: 

J$a ampersand 

%b left bracket 

J$c cents sign 

Jgd dollar sign 

%e equal sign 

J$f one fourth 

Hg rijajht bracket 

Jjh one half 

Jgi ' (single quote) 

J$j " (double quote) 

}jk5 ***** (5 asterisks) 

(5 may be replaced by 2, 3, ..., 9) 

%1 left parenthesis 

ijm minus sign 

J$n number sign (#) 

Jgo colon 

i$p plus sign 

*$q question mark 

J$r right parenthesis 

%s star (asterisk) 

Ht a_t (@) 

Jgu underscore 



Learning this table — or at least 
part of it — makes it easier for the 
user to switch from one typewriter key- 
board to another in which some of the 

c ha r a c t era m ay b e in different p o s i 

tions . 

The shift key can also be used, 
either in shorthand or longhand mode. 
In longhand mode, it simply causes 
capitalization as usual; in shorthand 
mode, this is true only for punctuation 
and for the first letter of a shorthand 
form; any other use constitutes an er- 
ror. It is less efficient to hold the 
shift key down while typing something 
else than it is to use the capitaliza- 
tion key; the use of the shift key is 
retained, however, both because people 
often use it out of force of habit and 
because some typewriters have no key to 
the right of the semicolon. 

The carriage return key is used 
to end paragraphs only. The program has 
stored a maximum number of characters 
per line, and calculates where old lines 
end and new lines begin. (The standard 
word-processing functions of right jus- 
tification and hyphenation may be added 
to a system such as ours, as optional 
extras'.) It may be noted that, in coun- 



WEST COAST COMPUTER FAIRE 



282 



BOX 1579, PALO ALTO CA 94302 



ting characters in our original long- 

and sentence, we have omitted the 
four carriage returns and the hyphen 
(in the word "character") that would 
not be typed if the system were used. 
If these are included in the calcula- 
tions, the typing speed increase ri- 
ses, in the best case, from 73.5% to 
79.5%. When a carriage return is 
typed, a new line is started, blanks 
are printed (we print six) and the 
first character of the first word of 
the next paragraph is marked for ca- 
pitalization. 

List Of Two-Character Codes 



We now list the two-character 
codes which we are using, in an or- 
der that makes them reasonably easy 
to learn. 

(1) The following two-letter 
words represent themselves in short- 
hand: 

PRONOUNS me, my, we 
ADJECTIVES an, no 
VERBS am, do, go 
CONJUNCTIONS if, or, so 

In addition, "up" and "us" are re- 
presented by £2. and os_, as noted 
above, since u all by itself repre- 
sents the very common word "on." 

(2) The following words are 
represented in shorthand by their 
first two letters (thus bo repre- 
sents "body," ch represents "chil- 
dren," and so forth): 

NOUNS body, children, course, 
data, education, effect, end, equip- 
ment, experience, form, idea, inte- 
rest, life, mind, Mr., nature, night, 
part, rate, right, road, state, will 

PRONOUNS him, it's, our 

ADJECTIVES all, big, black, 
certain, each, even, far, full, 
great, human, last, least, low, 
more, old, one, own, right, same, 
such, three, two 

ADVERBS away, even, here, too, 
where 

VERBS are, came, did, end, 
find, form, gave, get, had, last, 
may, must, obtained, own, put, read, 
run, see, should, state, will 

PREPOSITIONS about, after, be- 
hind, during, near, off, over 

CONJUNCTIONS but, either, how- 
er 

(3) The following words are 
represented in shorthand by their 
first and last letters (thus a_a re- 
presents "area," bd_ represents 
"board," and so forth): 



WEST COAST COMPUTER FAIRE 



NOUNS area, board, being, back, 
boy, club, can, car, city, data, death, 
door, days, day, evidence, field, fact, 
general, group, head, half, help, heart, 
history, leadership, law, man, member- 
ship, Mrs., nothing, nations, place, 
problem, point, room, return, something, 
states, thought, tax, world, way 

PRONOUNS her, I'll, I'm, its, my- 
self, they, who 

ADJECTIVES all, any, both, bet- 
ter, dead, done, dark, English, every, 
free, following, four, few, good, gene- 
ral, high, less, likely, most, north, 
natural, public, red, real, recent, 
small, these, this 

ADVERBS back, ever, generally, 
here, later, now,. nearly, only, proba- 
bly, rather, really, then, too, well, 
when 

VERBS being, began, brought, 
could, can, cannot, done, doing, don't, 
going, given, got, having, help, has, 
looked, let, making, need, not return, 
said, see, saw, say, thought, went 

PREPOSITIONS around, among, 
against, following, from, into, off, 
out , toward 

CONJUNCTIONS how, nor 

(3) The following words are re- 
presented in shorthand by their first 
and next-to-last letters (thus cc re- 
presents "church," c& represents 
"change," and so forth): 

NOUNS church, change, case, home, 
hand, light, name, present, period, 
past, research, state, time, type, wife 
PRONOUNS himself, what, which 
ADJECTIVES another, best, early, 
east, first, five, left, large, light, 
little, long, much, next, past, some, 
their, what, which 

ADVERBS again, also, once, there 
VERBS become, believe, change, 
come, didn't, felt, found, give, have, 
left, like, made, might, make, move, 
present, state, take, told, type, .were 
PREPOSITIONS above, down, like 
CONJUNCTIONS than, though 

(4) The following words (in addi- 
tion to the four-letter words in the 
preceding list) are represented in 
shorthand by their first and third let- 
ters (thus c_u represents "country," e& 
represents "England," and so forth): 

NOUNS country, England, increase, 
labor, level, objective, power, report, 
river, service, table, woman 

ADJECTIVES different, economic, 
expected, important, local, limited, 
major, military, necessary, other, ob- 
jective, social, technical, these 

VERBS called, develop, expected, 
require, would 



283 



BOX 1579, PALO ALTO CA 94302 



PREPOSITIONS along, before, 
except 

CONJUNCTIONS because, since 
(5) The following words are re- 
presented in shorthand by their first 
letter and some other letter in the 
given word, or "z" where the word 
contains the sound of z_, as indicated: 

NOUNS anything (ah), business 
(bz), community (ci), company (cp), 
development (dl) , department (dm), 
example (em), everything (et), eyes 
(ez) , government (gm) , husband (hb), 
headquarters (hq) , hands (hz), infor- 
mation (ia), individual (iv) , lines 
(lz), members (mb), means (mz) , number 
(nb), newspaper (np) , needs (nz), pre- 
sident (pd), program (pg) , project 
(pj)» people (pp), problems (pz) , rea- 
son (rs), result (rz) 

PRONOUNS themselves (tv) 
ADJECTIVES American (ac) , close 
(cz), difficult (dc), developed (dp), 
enough (eu) , historical (he), national 
(nn) , possible (pb), professional 
(pf), political (pi), religious (rg) , 
those (tz) 

ADVERBS always (az) , further 
(fh), frequently (fq), perhaps (ph) 

VERBS became (ba) , close (cz), 
developed (dp), does (dz), provide 
(pv) , reached (rh) 

PREPOSITIONS between (bw) , in- 
side (ii), through (tu) 

CONJUNCTIONS although (au) , 
therefore (tf) 

(6) Finally, there are the fol- 
lowing exceptions (somewhat analogous 
to the way we- pronounce busy "bizzy , ■'-' 
etc.): 

NOUNS art Caj)» cut (cj), col- 
lege (ex), defense (dx) , feet (ff), 
family (fx), God (gx) , house (hx) , 
love (lu), men (mm), office (ox), pro- 
duct (pk), set (sj), school (sk) , top 
(tj), women (ws), war (ww) 

PRONOUNS I (ij), itself (ix), 
she (sz), them (tq) 

ADJECTIVES many (mx) , new (nu), 
per (px) 

ADVERBS almost (ax), why (wq) 
VERBS asked (aq) , been (bx) , 
cut (cj), drive (db) , look (lq), love 
(lu) , set (sj) 

PREPOSITIONS without (wz) 
CONJUNCTIONS while (wx) 
Each of the above lists is in 
alphabetical order of the shorthand 
forms involved, even though this may 
not be the alphabetical order of the 
corresponding longhand. Homonyms can 
be easily seen to have different 
shorthand forms; thus we have "there" 
(tr_) and "their" ( tjL) , etc. 



WEST COAST COMPUTER FAIRE 



If a word (such as "English") has 
a shorthand form and begins with a ca- 
pital letter, the capitalization is au- 
tomatically supplied. Note that a few 
words have such common plural forms 
that the plural has a shorthand form 
all its own; thus we have "day" (dy) and 
"days" ( d^s) . In other cases a form of a 
word will be much more common than the 
word itself, so that, for example, 
"members," "reached," and "frequently" 
have two-character shorthand forms, 
whereas "member," "reach," and "fre- 
quent" do not . 

There are many duplications in 
the above lists; thus "end," "state," 
and "will," for example, are both nouns 
and verbs, while "all," "off," and "see" 
appear both in paragraph 2 (first two 
letters) and paragraph 3 (first and last 
letters). Occasionally a word will have 
a two-letter code, not because it is 
particularly common, but because that 
code does not seem to fit any common 
word; "leadership" (lp) and "headquar- 
ters" (hjL) are examples of this. 

Summary 

A computer-aided shorthand system 
has been demonstrated to be feasible. 
Details of the actual computer system 
which implements the shorthand transla- 
tion as described here are deferred to a 
subsequent paper. 

References 

1.. Smith, Joseph W.. H... Jr., ABC 

Shorthand , Smith Business School, 
Washington, D. C. 

2. ITT Corp. Speedwriting Series, 
Principles of Speedwriting , Bobbs- 
Merrill, Indianapolis, Ind. , 1977. 

3. Koomanoff , L. G. , and A. J. 
Gasdor, Computer Compatible Machine 
Shorthand For Expanding Careers , Sten- 
tran Systems, 380 Maple Av . W., Vienna, 
Virginia, 1973. 

4. Kucera, H., and W. N. Francis, 
Computational Analysis of Present-Day 
American English , Brown University 
Press, Providence, R. I., 1967. 

5. Thorndike, E. L., and I. Lorge, 
The Teacher's Word Book of 30,000 Words , 
Teacher's College, Columbia University, 
New York, 1944. 

6. Carroll, J. B., P. Davies , and 
B. Richman, The American Heritage Word 
Frequency Book , Houghton Mifflin Co. , 
Boston, 1971. 



284 



BOX 1579, PALO ALTO CA 94302 



MICROCOMPUTER APPLICATIONS IN COURT REPORTING 

Douglas W. Du Brul, BSEE 

5681 Mary Lane Drive 

San Diego, California 92115 

Phone: 714/583-3733 



This paper describes a need for a 
set of compatible word-processing sys- 
tems for use by court reporters and 
attorneys. By taking a "systems engi- 
neering" approach to the design of an 
integrated set of word processing equip- 
ments it will be possible to simultane- 
ously improve the transcript production 
process for court reporters and reduce 
the cost of computerized data searching 
for attorneys. The key to potential im- 
provement is digitization of the data as 
early as possible in the transcript pre- 
paration cycle. 

This is a systems level article. 
It describes an applications area for 
small word-processing systems, describes 
the manual process to be replaced, indi- 
cates possible functional improvements 
which may open up new markets, and pre- 
sents several design concepts for equip- 
ment to meet the identified needs. Tech- 
nical considerations are not addressed 
in detail. 

Documentation support advantages 
of early digitization include the trans- 
fer of data over telephone lines, CRT 
text- editing prior to any printing, com- 
pact record storage, and low-cost docu- 
ment reproduction. And if digitization 
takes place at the source data level (as 
shorthand is being used to record testi- 
mony) , it is even possible to computer- 
ize the translation of the shorthand 
symbols into plain language. 

The applications area being ad- 
dressed is a very good potential market 
area for small computing systems. Al- 
most all of the court and deposition 
transcripts are produced by "independent" 
contractor" typists (working at home) . 
Amazingly this slice of highly dispersed 
free enterprise accounted for about one 
billion dollars worth of documentation 
in 1977. That dollar amount was ob- 
tained by taking estimates of transcript- 
related income for the reporters in San 
Diego County, California, reducing it to 
dollars per area resident and then ex- 
trapolating that value to the population 
of the entire country. 

Roughly 25% of the billing cost 



of transcripts represents direct ex - 
penses incurred in the actual production 
of the documents (equipment, typing 
labor, duplication, binding and distri- 
bution) . In addition to these tradi- 
tional and presently funded activities, 
there exists a potential market for 
equipment and services in the "litiga- 
tion support" category which could in- 
volve both attorneys and court report- 
ers. 

Cooperation between a court re- 
porting firm and an attorney client can 
result in a reduction in the need for 
capital investment by the attorney. A 
reporting firm which uses a computer in 
the preparation of transcripts can make 
computer searches for key words and 
phrases identified by clients. The re- 
sults of the searches can be presented 
in the form of an index to the trans- 
cript pages on which the words and 
phrases appear. The reporting firm 
could also make digital tape recording 
of transcripts so that it would be pos- 
sible to re-enter the data into the com- 
puter to make further searches at a 
later date should it become desirable 
to search for other key words and 
phrases. 

The service outlined in the prev- 
ious paragraph will have special appeal 
to small law firms and attorneys who do 
not have computing equipment. A simi- 
lar service may also be appractive' to 
law firms having computers. To indulge 
in computer searching of transcripts it 
is necessary to first digitize the text 
of interest. This digitization is fre- 
quently accomplished by use of an opti- 
cal character recognition (OCR) unit, 
frequently referred to an an optical 
scanner. These OCR units are capable of 
reading typed pages, provided certain 
type fonts have been used, and placing 
the data in a computer in proper digital 
form. The need for these expensive 
pieces of equipment (about $14,000 to 
$32,000) might be avoided by having a 
reporting firm provide a tape recording 
of the document in proper form. If the 
reporting firm uses a computer in 



WEST COAST COMPUTER FAIRE 



285 



BOX 1579, PALO ALTO CA 94302 



transcript preparation, the digital data 
will exist in the reporting firm's com- 
puter and it would be a simple matter 
to make a tape recording of it for deli- 
very to a client. 

Much spade work has already been 
done in applying computers to court- 
related tasks, but there is still room 
for innovative thinking. There is a 
real need for adapting small general- 
purpose computers to tasks presently 
being done by large time-sharing sys- 
tems or dedicated computers which are 
integral parts of single- function 
equipment. This trend will probably 
not significatly impact on the need for 
time- shared services or special-purpose 
equipment, but it will bring the power 
of the computer to more small business- 
es - and with no compromise in the qual- 
ity of the product or service provided. 

Existing Methods 

The present manual process for 
producing court transcripts starts with 
a court reporter who records the ori- 
ginal testimony in shorthand. Most re- 
porters now use shorthand typewriters 
(stenotype machines) , but some report- 
ers are still "penwriters" . When an 
order is received for a transcript, it 
is necessary for someone to "trans- 
cribe" the shorthand notes and type up 
a formal document. 

Several approaches are used to 
transcribe shorthand notes . The most 
frequently used method involves having 
the reporter read the notes and dictate 
into a dictating machine. The dicta- 
tion tapes are then given to a tran- 
scriber who types up the finished do- 
cument, which is then returned to the 
responsible reporter for proofing pri- 
or to delivery to the client. Alter- 
natively, the court reporter might de- 
liver the shorthand notes to a "note 
reader" (a transcriber who is also 
skilled in reading shorthand) who will 
type the transcript directly from the 
shorthand notes. The note reader re- 
lieves the reporter of the dictation 
task, but charges more for note read- 
ing than for typing from dictation 
tapes (about twice as much) . A third 
method for manual production of tran- 
scripts is for the reporter to do the 
typing directly from the shorthand 
I notes without involving a third party. 
I This approach is too time consuming 
I for reporters who carry a normal work 
I load. 

I The documentation methods men- 
I tioned in the previous paragraph are 



all manual methods. These have been in 
use for many years, but they are now 
being challenged by computer-aided 
transcription. Computer-aided tran- 
scription (CAT) services are available 
commercially, but it is not yet possi- 
ble to purchase CAT software. Various 
systems are under development using a 
number of approaches to preparing data 
for entry into the computer. Presently 
available commercial CAT systems all 
use the input device shown in Figure I 
(or a male counterpart) . The basic 
analog-to-digital converter is still 
the human brain, and interfacing to the 
computer system is accomplished with an 
encoder installed in a stenotype ma- 
chine, which sense the operator's "key- 
strokes". All-electronic voice digi- 
tizers exist, but they work best when 
fully optimized for one person at a 
time. 




Figure 1, Adaptive analog-to-digital 
converter for computer-aided tran- 
scription systems- _ 



CAT systems constitute a threat 
to the traditional court- reporting 
community because CAT systems can pro- 
duce computer-generated indexes to 
key words and phrases. This service 
cannot be duplicated manually without 
an inordinate expenditure of time and 
effort. Since there are several good 
reasons for small reporting firms to 
avoid an immediate involvement with CAT 
equipment it becomes very attractive to 
consider the use of small word-process- 
ing systems which enable manual typists 
to digitize the data while producing 
hard copy in the traditional manner. 
The digital record can then be deli- 
vered to a reporter client having com- 
puter facilities for making the re- 
quired data searches. 

Computer-aided transcription is 
too big a subject to be covered in de- 
tail in this paper, but a quick over- 
view is in order. Commercially avail- 
able CAT services at present are of 
two general types. Baron Data Systems 
of Oakland, California provides a 



WEST COAST COMPUTER FAIRE 



286 



BOX 1579, PALO ALTO CA 94302 



I complete '*s tan d- alone" system under a 
I lease arrangement. The equipment pro- 
I vided is all that one needs to tran- 
I scribe shorthand records to plain lan- 
I guage, to edit the text on a CRT, and 
to print the final document. Steno- 
graphic Machines, Inc., of Skokie, 
Illinois, provides a service which re- 
quires a telephone connection with 
their host computer. This is typical 
of the service offered by several other 
CAT service firms also. When the 
shorthand- to- plain language transla- 
tion is performed by a remote computer, 
the customer usually has to have text- 
editing and printing facilities, al- 
though arrangements can usually can be 
made to have hard copy returned by mail. 

Although CAT seems to be gaining 
in popularity, there are a number of re- 
porters who have reservations about be- 
coming involved. Some fear that they 
are not "computer compatible". Others 
object to the cost, which is about the 
same as for a note reader's services. 
However, the per-page cost of CAT- 
produced copy decreases as the number of 
pages per unit of time is increased. 
Until very recently CAT was considered 
as just another way of producing a 
transcript, but that picture changed 
when the CAT service firms started to 
offer computer-generated indexes to key 
words and phrases. 

The most obvious reason for the 
limited use of CAT is the lack of com- 
mercially available software. Appar- 
antly the owners of CAT software see a 
greater return on their investment in 
the sale of CAT servir3s than in the 
sale of CAT software. Speaking as one 
who has researched the task of writing 
CAT software, I can sympathize with 
those who have developed acceptable pro- 
grams. The program structure is basi- 
cally simple, but the work involved in 
building up the master dictionary is a 
discouraging prospect. Hopefully 
someone with a CAT capability will start 
to provide a service in which the short- 
hand notes will be read optically and 
the first-pass computer output will be 
returned in the form of digital tapes. 
The responsible reporter could then do 
the text-editing, proofing and print- 
ing. This approach would appear to be 
very satisfactory between now and the 
time CAT software becomes available at 
a reasonable price. 

New System Concepts 

The system of Figure 2 is a 
simple typing station capable of pro- 
ducing a magnetic tape recording and 



hard copy simultaneously. Input to this 
station will be dictation tapes or short- 
hand notes, depending on whether the 
operator is a transcriber or a note 
reader. Preferably the electronics 
should be capable of processing simple 
error- correct ions, entered at the key- 
board, so as to produce an error- free 
magnetic tape recording. Buffering of 
several pages of text will be required. 
It should be possible to print final 
copy a page at a time under computer 
control while the recently typed-in 
text is still in the buffer memory. The 
output tape format must, of course, be 
compatible with all "downstream" equip- 
ment. It may be necessary to include a 
capability for producing magnetic tapes 
to more than one recording format (and 
physical size) if this station is re- 
quired to feed several mutually incompa- 
tible systems. 




WEST COAST COMPUTER FAIRE 



287 



Figure 2, A simple transcriber's station 
capable of capturing typewriter key- 
strokes while producing hard copy. 

1. Typewriter. 

2. Typewriter/computer interface unit. 

3. Microcomputer. 

4. Tape recorder. 

In court reporting the reporter 
who does the initial reporting is re- 
sponsible for the accuracy of the final 
document, so it is common practice for 
them to proofread at home. When digi- 
tal recordings become available, the 
reporters will need a low- cost text- 

BOX 1579, PALO ALTO CA 94302 



editing station similar to that shown 
in Figure 3. The input to this station 
will be the output of the system shown 
in Figure 2 or the unedited output of a 
computer-aided transcription service. 
The system should be capable of reading 
a block of data into computer memory 
from where it can be called up for dis- 
play on the CRT for editing. Edited 
text is to be recorded on the output 
recorder. 





Figure 3, A minimal court reporter's 
text-editing station. 






1. Input tape reader 
2 . Microcomputer, 

j. »~ttx editing terminal. 

4. Output tape recorder. 



The system shown in Figure 4 is a 
full- featured reporter's station. It 
is intended that this station be capa- 
ble of all of the operating features 
of the systems shown in Figures 2 and 
3 and, in addition, be capable of a 
number of other special word-processing 
manipulations. It would be highly de- 
sirable, though not absolutely necess- 
ary, that this system be capable of 
assigning page numbers, indexing of key 
words and phrases, and computation of 
"folio counts" (the number of blocks of 
500 characters) . The folio count is 
used for billing purposes. It is like- 
ly that this system will need a dual 
floppy disk drive in addition to the 
equipment shown in Figure 4. The out- 
put of this system will be the final 
hard copy and, if required, digital 
tape recordings for use as a record 
storage medium, or for delivery to a 
client as an additional "product" . 



Figure 4, A full- featured court 
reporter's system. 

1. Input tape reader. 

2. Manual input or text- editing station 

3. Output tape recorder. 

4. Printer. 

5. Microcomputer. 

6. Printer interface unit; 



Figure 5 is a simple system in- 
tended for use by an attorney in search- 
ing a transcript for which a digital 
tape recording is available. This sys- 
tem should be capable of simple search- 
ing for key words and phrases. A more 
elaborate version of this system would 
be required for long documents. A dual 
floppy disk drive would not only in- 
crease the processing capability but 
would make it possible to accept floppy 
disk recordings as input. 

Figure 6 illustrates a system 
which is functionally equal to that of 
Figure 5 except that it assumes the 
availability of a "smart" terminal capa- 
ble of performing the required functions 
without the need for a separate micro- 
computer unit. 



WEST COAST COMPUTER FAIRE 



288 



BOX 1579, PALO ALTO CA 94302 




The design concepts presented in 
this paper are being refined by the 
author and several associates, primarily 
at the concept level. Suggestions from 
persons aware of equipment or software 
potentially capable of supporting any of 
these system concepts will be greatly 
appreciated. 



Figure 5, An attorney's document- 
searching station using a "dumb" ter- 
minal. 

1. Input tape reader. 

2. Microcomputer. 

3. CRT terminal. 




Figure 6, Attorney's document- 
searching station using a "smart" 
terminal. 

1. "Smart" terminal. 

2. Input tape reader. 

Figure 7 is a conceptual sketch of 
a unit that could be developed for use 
in both the court reporting and attor- 
ney communities. It could be supplied 
with or without a printer or floppy 
disk unit, depending on the application. 
In this way it would be possible to 
shave cost where necessary while making 
it possible to upgrade the system with 
I standardized modules at a later date. 



WEST COAST COMPUTER FAIRE 



289 



BOX 1579, PALO ALTO CA 94302 




Figure 7, An integrated "court- support" terminal, 

1. Input tape reader/recorder. 

2. Output recorder. 

3. Computer control keys. 

4. Cursor controls. 

5. Number pad. 

6. Output tape recorder. 



WEST COAST COMPUTER FAIRE 



290 



BOX 1579, PALO ALTO CA 94302 



REAL TIME HANDWRITTEN SIGNATURE RECOGNITION 

Kuno Zimmermann , Dept. of Electrical Engineering 

Lafayette College, Easton, Pa. 18042 



Abstract 



Problems of computer security and entry 
control have over the last few years been 
approached in various ways; fingerprint recog- 
nition, handwriting pressure patterns and/or 
accelerations recognition, to mention just 
a few. Handwritten signature analysis 
appears to be reasonable in terms of recog- 
nition effectiveness, required capital in- 
vestment and computational load. This con- 
tribution will present an introduction to 
the state of the art in handwritten signa- 
ture recognition as evidenced by patents held 
by various corporations and by recent publi- 
cations on both signature recognition algo- 
rithms and signature input devices. A 
basic system consisting of a simple graphic 
tablet, an A to D converter and a micro- 
computer will be introduced, as an example 
of the possibilities available to today's 
microcomputer user. Experience acquired on 
such a system comprised of a modified Intel 
SDK-80 linked to an HP-3000 will also be 
discussed. 

Introduction 



The need for an accurate, fast and low 
cost personal identification system has in- 
creased steadily in our computerized society. 
Possible applications for such a system are in 
computer memory protection, security access, 
entry control, etc. This identification 
problem has, over the years, been approached 
in various ways: fingerprint recognition, 
voice print recognition, handwriting pressure 
patterns and/or accelerations , to mention but 
a few. Handwritten signature analysis appears 
to be reasonable in terms of recognition 
effectiveness, required capital investment 
and computational load. With this in mind, 
a systematic search of patents and literature 
in this field was undertaken. An experi- 
mental signature analysis system was built to 
test some of the approaches proposed, as well 
as some other ideas. 

Dynamic Signature Recognition Concepts 



A handwritten signature is essentially 
a 3 dimensional trajectory, where the x and 
y axis should be taken as corresponding to 
the usual left to right and top to bottom dis- 
placement of normal handwriting, and where the 
z axis is taken along the direction of dis- 
placement or pressure into the writing surface. 

L WEST COAST COMPUTER FAIRE 



Assuming the availability of means to translate 
such 3 dimensional components into a form 
suitable for computer processing, what sort of 
features should one be looking for to attempt 
recognition? Such questions and their answers 
were pondered more than 50 years ago by 
graphologists. To quote from Downey's Graph- 
ology and the psychology of handwriting [j] : 
"The existence of graphic individuality, often 
of a very pronounced type, will hardly be 
questioned." And later on: "The mathematical 
probability of two complete handwritings being 
identical is one in something more than 68 
trillions". And to quote from Saudek's 
Experiments with graphology [2] : The pressure 
is among those features of the handwriting 
which are very difficult to alter, and is 
therefore in a high degree individual and 
characteristic." This second quote, in par- 
ticular, encourages one to investigate the 
pressure patterns of a signature process. A 
quick glance at the literature along this 
idea reveals a wealth of patents and publica- 
tions on both pressure input devices and 
processing methods. A patent assigned to 
Veripen,Inc, £3], for instance, describes an 
input device which is basically a capacitor 
consisting of two parallel plates separated 
by an elastomeric material. A writing stylus 
exerting pressure on a writing surface resting 
on the upper plate will change the spacing of 
the plates and thus introduce a capacitance 
change related to the pressure. Three patents 
assigned to Burroughs Corp. JYJ \s] \6] 
describe input devices consisting of a hand- 
writing surface suspended in space on a 
cantilever arm [Y[ or on rubber support members 
\_5J , |_6J . Pressure variations induced by hand- 
writing are translated into a strain in the 
cantilever arm [4] or a change in magnetic 
coupling between various coils traversed by a 
magnetic rod rigidly attached to the handwrit- 
ing surface [5] , [6] . Two further patents 
assigned to Burroughs Corp. describe respective- 
ly another plate-like handwriting surface 
resting on two elliptically shaped members 
where the pressure is related to the strain 
induced in these members and picked up by 
strain gages [7 J , and a force responsive trans- 
ducer fixedly mounted within the housing of a 
writing instrument such as a ball point pen 
[8] . An implementation similar to the latter 
is found in a patent assigned to the Mosler 
Safe Company [9] . 

The recognition algorithms proposed in 
conjunction with pressure patterns range from 

291 BOX 1 579, PALO ALTO CA 94302 



simple human or optical comparison or direct 
correlation methods [9] , to more sophisti- 
cated and at times also more empirical 
approaches involving averaging, normaliza- 
tion of certain parameters, and data encod- 
ing (compression) to decrease memory con- 
straints [lo] . 

While pressure patterns obviously pro- 
vide a solution to the problem of signature 
authentication, one should ask whether the 
x and y components of a signature traject- 
ory might not be used also, either inde- 
pendently or in conjunction with the z-axis 
pressure patterns? Here comparison of the 
y ordinates and x abscissas of two signatures 
will not help much, since this is precisely 
the kind of duplication forgers excel at. 
Clearly, a better idea would be to compare 
the vertical and horizontal velocities, or 
even more so, the vertical and horizontal 
accelerations of the signature process. A 
priori deliberate and careful forgery is 
certain to fail an acceleration comparison 
test with an original. However, are the 
accelerations of each of one's handwritten 
signatures characteristic to the point where 
they are the same time after time? The 
definite answer to this question is found in 
the work of some IBM researchers. Herbst et 
al _.llj, using anterior research [l2j , [13] , 
[l4j , established that the act of signature 
handwriting is the consequence of muscular 
interactions of ballistic rather than feed- 
back nature. Motions controlled by sensory 
feedback are usually slow and precise. 
Ballistic motions are generally rapid, and 
their accuracy increases with speed. Walking, 
playing a musical instrument, swinging a 
tennis racquet or a golf club, writing a 
signature all are ballistic motions. The 
muscular forces involved in a signature are 
therefore predictable and predetermined, and 
as a consequence, the accelerations of the 
movement will exhibit the same characteristics. 
The exploitation of this property of hand- 
written signatures for the purpose of compari- 
son and recognition of signatures requires 
suitable input devices. A two dimensional 
graphic data entry tablet for transforming a 
positional information into a digital input to 
a computer system is the subject of a patent 
assigned to IBM [l5j . Another position 
measuring system of the writing tablet-stylus 
type is described in patent [l6j which is also 
assigned to IBM. Both of these tablets re- 
quire analogue or digital 2nd order differen- 
tiation of the x-y signals in order to obtain 
the accelerations. An apparatus consisting of 
a horizontal platen, connected by a pair of 
inner beams to an intermediate structure it- 
self connected by a pair of outer beams to a 
I supporting frame, allows direct measurement 
■ of the accelerations through strain gage 
I measurement of the forces in the connecting 



beams, and is the subject of patent [l7] 
assigned to Stanford Research Institute. More 
recently developed input devices include x-y 
pressure transducers [l8] or x, y accelero- 
meters [11J mounted within pen -like housings. 
In both cases, z axis information is acquired 
from pressure sensors located under the writ- 
ing surface platen. The recognition algorithms 
proposed in conjunction with acceleration 
patterns range from the conceptually simple 
correlations proposed in patent [l9j assigned 
to Sylvania Electric Products, Inc., to a more 
sophisticated method of segmented correlation 
proposed by IBM [llj , to a similar method in- 
cluding data compression also proposed by IBM 
£20^ , to a method of segmented "rubbery" 
correlation introduced by Stanford Research 
Institute [2lJ . The latter Institute also is 
the assignee of patents [22J and [23j , which 
present two approaches for computing template 
vectors from the x, y and z signals, as well 
as algorithms to compare template vectors of 
reference and sample signatures. 

Whereas all input devices and recognition 
algorithms mentioned up to this point use 
either pressure patterns or x, y, and sometimes 
also z acceleration patterns, the input device 
and recognition algorithm introduced by RCA 
and presented in |_24j use handwriting speed as 
a discriminant. This is a natural consequence 
of the rather unusual but very ingenious input 
device, where a stylus deposits charge on an 
insulating writing surface, the total charge 
laid down being proportional to the total 
linear extent of the handwritten piece of in- 
formation, and the magnitude of the charging 
current being proportional to the instantan- 
eous speed at which the stylus is being moved, 

A Signature Recognition Facility 

A simple signature recognition system 
consists of a graphic tablet to translate the 
x and y deflections of the handwriting into 
analogue electric signals, a two channel multi- 
plexed analogued digital converter, and a 
microcomputer to control the A-D converter and 
to store the samples of the vertical and hori- 
zontal deflections. From the surveyed litera- 
ture and patents, as well as from our own 
experience it appears that a sampling frequency 
of 100 Hz is reasonable; in fact, it seems 
that handwriting signals exhibit major spectral 
components in the range of 2 to 25 Hertz 
primarily. Since most signatures are written 
in less than ten seconds, a storage capability 
of 2000 pts (10 seconds of x and y deflection 
both sampled at 100 Hz = 1000 + 1000 points) 
is amply sufficient. The low sampling fre- 
quency of 100 Hz (corresponding to successive 
pairs of x and y samples spaced at 10 ms, 
intervals) leaves plenty of time available for 
any late model microprocessor to perform other 
tasks such as preprocessing, recursive filter- 



WEST COAST COMPUTER FAIRE 



292 



BOX 1579, PALO ALTO CA 94302 



ing, validity testing, etc. , in between 
samples. The system constructed at Lafayette 
College uses a slightly modified Intel SDK-80, 
a DATEL 8-channel differential A-D converter 
(obviously an overkill since neither the 
differential capability nor more than two 
channels are needed) , and a simplistic graphic 
tablet. This tablet consists of two super- 
posed conductive sheets (graphite coated 
Mylar or paper) spaced a few thousands of an 
inch apart. Electric fields are alterna- 
tively established on these sheets by 
supplying them with out of phase pulsed bias 
voltages. Whenever a writing instrument 
forces the two sheets into contact, the sheet 
not presently pulsed acts as the wiper of a 
potentiometer and picks up a fraction of the 
supply voltage to the other sheet propor- 
tional to the position of the stylus. The 
output of the tablet thus consists of two 
pulse amplitude modulated x and y signals. 
These are subsequently low-pass filtered 
(integrated) in order to obtain two analogue 
signals suitable as inputs to the A-D convert- 
er. Reconstruction of signatures from the 
stored samples of the x and y signals demon- 
strates the satisfactory working of the 
acquisition system (Fig. 1) . To compute the 
accelerations, various experiments with 
digital 2nd order differentiators led to the 
use of a finite impulse response (FIR) filter 
of order 25, with coefficients smoothed by a 
Blackman window. Comparisons of the x and y 
accelerations of stored reference signatures 
with submitted original or counterfeit signa- 
tures were attempted under various criteria. 
Current recognition algorithms rely on conven- 
tional dicrete correlation, using a threshold 
dependent on the original signer's ability to 
consistently duplicate his own signature. 
Compression of the data was also attempted, 
with the conclusion that great care is needed 
to avoid losing vital information. Presently, 
success rates of the signature recognizer 
vary in the range of 80 to 95%, a valid 
recognition experiment being defined as the 
submission of a true or counterfeit signature 
and the correct acceptance or rejection of 
said signature. The exact success statistics 
are difficult to assess accurately at this 
point, since the data base is felt to be too 
small. 

While the original configuration called 
for the modified Intel SDK-80 to simply trans- 
mit the x and y samples to the HP- 3000 who 
then performs all the computations, the more 
recent implementation provides for the micro- 
computer to perform some minor computations. 
Ulterior developments will call for the 
microcomputer to assume a larger part of the 
data processing load, thus freeing the HP- 
3000 for more demanding tasks. 

Conclusions 



A quick glance at the state of the art in 
automatic handwritten signature recognition 
reveals a wealth of patents and a few publica- 
tions on the topic . Two main approaches are 
evident: (i) recognition by pressure pattern 
comparison, and (ii) recognition by accelera- 
tion pattern comparison. Either can be 
implemented fairly simply using today's micro- 
computer technology. Simple experiments 
performed on a system consisting of a simplis- 
tic graphic tablet, a modified Intel SDK-80, 
a DATEL A-D converter, and an interconnected 
HP-3000 show encouraging recognition rates 
and promise better results in the future. 

References 

[l J Downey , June E . , Graphology and the 
Psychology of Handwriting , Warwick and 
York, Inc., Baltimore, 1919 

[2] Saudek, Robert, Experiments with Handwrit- 
ing , William Morrow and Cy, New York 1929 

[3] Boldridge, Austin G.,Jr., U.S. patent 
#4,035,768 July 12, 1977 

[4] Radcliffe, Arthur J. Jr., U.S. patent 
#3,956,734 May 11, 1976 



[5] 



M 



#3,991,402 Nov. 9, 1976 



, U.S. patent 



, U.S. patent 



#4,008,457 Feb. 15, 1977 



[7] Roggenstein, Edwin 0. , et al., U.S. patent 
#3,563,097, Feb. 16, 1971 

[8 J Johnson, Robert R. , et al, U.S. patent 
#3,528,295, Sept. 15, 1970 

[9] Clark, Robert K. , U.S. patent #3,621,720, 
Nov. 23, 1971 

[lOJ Sternberg, Jacob, et al, U.S. patent 
#3,959,769 May 25, 1975 

jjLl] Herbs t, N.M. , and C.N. Liu, "Automatic 

signature verification based on accelerom- 
etry" IBM J. Res. Develop. , May 1977 

|_12] van der Gon, J., and J.Thuring, "The 
guiding of human writing movements", 
Kybernetika, 1,145, 1965 

[_13jEden, M. , and M. Halle, "The characteriza- 
tion of cursive writing", Information 
Theory, C. Cherry, Ed., Butterworths 
Publishing Co., Washington, D.C. 1961. 

(_14jvredenbregt, J., and W.G. Koster, "Analysis 
and Synthesis of Handwriting," Philips 
Tech. Rev. 32, 73, 1971 



WEST COAST COMPUTER FAIRE 



293 BOX 1 579, PALO ALTO CA 94302 




[l5] Dym, Herbert, U.S. patent #3,668,313, 
June 6, 1972 

[l6] Mazza, Robert V., U.S. patent #3,582,962, 
June 1, 1971 

[ill Kamphoefner,Fred J., et al, U.S. patent F^a . I Jrvi~-«'-i K i ?» i> l_if>iiiv >ke_ 
#3,988,934 Nov. 2, 1976 

[l8] Eernisse, Errol P., et al, "Piezoelectric 
sensor pen for dynamic signature 
verification," Proc. International 
Electron Devices Meeting, Dec. 5-7, 1977, 
Washington , D . C . 

[I93 Dyche, James W. , U.S. patent #3,699,517, 
Oct. 17, 1972 

[20J Herbst, Noel M. , et al. , U.S. patent 
#3,983,535, Sept. 28, 1976 

[2l] Crane, Hewitt D. , et al, U.S. patent 
#4,040,012 Aug. 2, 1977 

[22] Crane, Hewitt D. , et al, U.S. patent 
#4,040,011 Aug. 2, 1977 

[23] Crane, Hewitt D. , et al, U.S. patent 
#4,040,010 Aug 2, 1977 

p24] Engelbrecht, Rudolf S., U.S, patent 
#3,962,679 June 8, 1976 



I 



WEST COAST COMPUTER FAIRE 294 BOX 1579, PALO ALTO CA 94302 



INPUT HARDWARE DESIGN FOR CONSUMER ATTITUDE RESEARCH WITH A MICROCOMPUTER 

Dr. H. P. Munro 
Director, Laboratory for Research and Instruction 
in Rhetoric and Communication 
Kent State University 
Kent, OH. 44242 



Possible business uses for a microcom- 
puter include consumer research for product 
developers or advertising agencies. Of the 
areas of concern for the owner of a microcom- 
puter system who wishes to adapt it for such 
a purpose, two are the foci of this paper: 1) 
some psychological and statistical cautions 
which should be observed in order to generate 
useful data, and 2) how to design input hard- 
ware to implement these cautions. Reference 
is made to "home-grown" hardware in a univer- 
sity-based lab which could be used to do pre- 
market studies of goods, services and adver- 
tising messages. 

Introduction 

One possible business use for a 
microcomputer is consumer research for 
product developers or advertising agen- 
cies. Quite a few such companies are 
located in places other than New York, 
Chicago or L.A., and local ad campaigns 
for products and services might more 
quickly, intensively and efficiently 
utilitze a microcomputer system with 
appropriate input hardware than by the 
traditional interview methods or written 
questionnaire and attitude surveys. 

The system which has provided the 
experience for my observations in this 
report is a university-based social 
psych communication research lab used 
for measuring the impact of various 
messages, appeals and sources on aud- 
iences in the investigation of theories 
of rhetoric and communication, but the 
same configuration of equipment could 
just as easily be employed -- for a 
fee -- to do pre-market studies of pro- 
spective consumer goods and advertis- 
ing messages. 

My remarks will focus on two areas 
of concern for the owner of a microcom- 
puter system who wishes to adapt it for 
consumer research: i) some psychologi- 
cal and statistical cautions which 
should be observed in order to gen- 
erate useful data, and 2) some "how- 
to" suggestions on appropriate input 
hardware to implement these cautions. 

Psychological cautions to observe 
include: (a) choice of target concepts 
to be judged; (b) choice of judgment 
scales on which to record audience re- 



sponses; and (c) number and identifica- 
tion of intervals (degrees) between the 
bi-polar extremes of each scale. Sta- 
tistical cautions are many, but the 
main ones germane to the design of hard- 
ware have to do with the constraints 
usually imposed on sampling and scaling; 
(a) number of judges to be sampled; (b) 
preservation of the interval assumptions; 
and (c) exclusion of multiple or ambig- 
uous responses on a given scale. 

Psychological Cautions 

Our laboratory at Kent State [1] 
uses CCTV videotape and a full range of 
A-V apparatus (most remotely controlled) 
to study the impact of speakers and 
other message sources on audiences. The 
lab is located in three rooms and is 
often used, in both research and instruc 
tion, to obtain response data from 
listener/viewers correlated simultane- 
ously with a split-screen videotape of 
the message source and selected portions 
of the audience (to record visual feed- 
back) . The response collecting hard- 
ware has undergone several generations 
of R§D change, with construction financed 
by limited funds and subsidized by grad- 
uate assistant labor; none of the gear 
in this report was bought "off-the- 
shelf" -- economics and unavailability 
of hardware to meet our needs have 
caused it to be "home-grown." This 
takes awhile, but in the end it is much 
cheaper and better adapted to specific 
needs. 

Certain constraints from social 
psychology and learning theory guided 
the design of our hardware. Some of our 
faculty do research on attitudes and 
attitude change. Thus, evaluations 
(good-bad, like-dislike, agree-disagree) 
and probability (likely-unlikely) were 
known to be frequent parameters of 
judgment. Others of us cut our teeth on 
the Semantic Differential of Charles 
Osgood and associates at the University 
of Illinois [2], and so other dimensions 
of judgment are needed: potency (strong- 
weak) and activity (active-passive) . 
Most of what follows in this section wil] 
be based on considerations imposed by 
these schools of psychology, as they 



WEST COAST COMPUTER FAIRE 



295 



BOX 1579, PALO ALTO CA 94302 



bear on the study of human communica- 
tion. 

Choice of Target Concepts . One 
of the assumptions in Osgood's work is 
that a concept to be described through 
the bi-polar scales (good-bad, certain 
impossible) and quantification (+3 to 
-3) of semantic differentiation will 
occupy a single point in an n-dimen- 
sional semantic "space." There has 
been considerable criticism, however, 
that this seems not to be true, as 
(careless) users of the Semantic Dif- 
ferential have reported that concepts 
like "myself" and "car," for example, 
shift around over time (are unreli- 
able) even with the same subjects. 
The problem here is that such concepts 
are over-broad and may be differently 
qualified by a subject at various 
times. That is, "car" could mean, 
when one is asked to respond to a set 
of scales resulting in a semantic pro- 
file, 1) the auto I have (junker), 2) 
the car I would like to have (Mercedes 
450 SLC) , 3) or the sub -compact a fav- 
orite student was killed in a few weeks 
ago. Obviously such "cars" will have 
different "locations" in the semantic 
space, i.e., will have different mean- 
ings, because they are in fact different 
concepts . So, the caution to be ob- 
served in choosing target concepts is 
to avoid ambiguity : qualify and con- 
dition each concept to be tested as 
fully as possibly, even if that re- 
quires, not one word as is so common- 
ly found, but a phrase of several 
words, or even a full sentence. For 
example, don't ask subjects to respond 
to the "Your Town Last National Bank," 
for how do you know they might not be 
thinking of the appearance of the build- 
ing, and that would certainly not fully 
tap the bank's desire to probe its total 
"image" with present or prospective de- 
positors. Instead, be more specific: 
"Quality of Drive-Up Window Service at 
Your Town Last National Bank" would be 
better. 

Choice of Judgment Scales. The 
quality of audience responses, in 
either ivory tower or marketplace 
research, depends on their validity and 
reliability. Simply put, do the con- 
cept judgments measure what they're in- 
tended to measure, and are judgment stim 
uli reasonably stable (across subjects 
and time)? These are usually thought of 
as statistical constraints, and indeed 
they are, but validity and reliability 
are also products of the psychological 
sophistication of the researcher and 



his instruments of measurement. They 
depend not only on the proper choice and 
precise wording of concepts (just dis- 
cussed) , but also on the choice of 
scales by which to measure those con- 
cepts. 

Detailed advice on this, as on 
other matters cannot be developed with- 
in the compass of this paper, but should 
come from professionals in the disci- 
pline of psychology and/or a careful 
reading of their work. For example, 
even though one could select 9 or 12 
scales from lists in Measurement of 
Meaning (Osgood et. al_. ) , too many users 
of the Semantic Differential have ig- 
nored the advised pre-testing of a given 
set of scales to make sure of their fit- 
ness for a given set of concepts and 
subjects. Thus we have, in the techni- 
cal literature, such gaffe's as "hot- 
cold" chosen as a hopefully "pure" scale 
(no loadings on evaluation [Factor I] 
or potency [Factor II]) to represent 
Factor III (activity) in the Semantic 
Differential and applied to such con- 
cepts as "pizza" and "beer," where the 
emotive connotations (which is what is 
measured by the Semantic Differential) 
become confounded because of referential 
or denotational associations (hot pizza 
is good and so is cold beer . . . except 
to an Englishman maybe 1 .). 

Commercial users of the Semantic 
Differential and similar scaling devices 
in the marketplace seem subject to even 
more ridiculous lapses of common sense. 
Even without consulting the technical 
literature on the proper choice of bi- 
polar adjectives, one should know better 
than to oppose "good" with "dull." And 
yet that is precisely what has been done 
by a rating firm in Hollywood (a major 
tester of live audience reactions) . 
According to a recent report by Associa- 
ted Press columnist Jay Sharbutt [3] , 
this firm asks audiences to dial a 
choice from "very dull," "dull," "nor- 
mal," "good," or "very good" in judging 
TV shows and commercials. What happens 
when the action in a television drama 
is both exciting and morally reprehen- 
sible? Perhaps the TV industry is 
finally ready to assert that murder, 
rape and other violent crimes are really 
"good" because they are not "dull," but 
my guess is that whoever chose the 
scales wasn't thinking too clearly. 
Lots of things are "good," in many 
senses of that umbrella word, including 
anything that is useful to some further 
goal, but good is not equal to pleasant, 
so it would seem more sensible to op- 
pose "dull" with "lively" or "exciting," 



WEST COAST COMPUTER FAIRE 



296 



BOX 1579, PALO ALTO CA 94302 



or "interesting." It would appear that 
this would be in the interests of a 
testing service as well, because it can 
only muddy the results to mix in moral 
judgments with ratings of entertainment 
value. 

So the caution here is to choose 
rating scales which are true opposites, 
and which are not "noisy" or ambiguous 
with several differing interpretations 
possible. 

Degrees Between Ends of Each 
Scale . The identification and number 
of intervals between the bi-polar ex- 
tremes of the scales chosen will de- 
pend somewhat on the scale names and 
the probable nature of the audience. 
If one is measuring agreement, then 
the usual qualifiers on a seven-point 
scale (like "agree-disagree") are 
"very strongly," "strongly" and 
"slightly" on each side of the neutral 
or ambivalent ("either /neither") cen- 
ter point. On the other hand, Seman- 
tic Differential qualifiers are usu- 
ally "extremely," "quite" and "slight- 
ly." A way to resolve this problem, 
and provide for a statistical concern 
yet to be mentioned, will be suggested 
in the hardware section of this paper. 

The question of how many divis- 
ions to have in one's scale has occu- 
pied a number of psychologists. Usu- 
ally the answer is: as many as can be 
discriminated reliably (on test/re- 
test trials) by a given audience. That 
is, the more divisions, the more use- 
ful the data because discrimination 
among concepts can be finer, until the 
point is reached where subjects are 
"overloaded" and can't really tell, 
say, between "slightly" and "quite." 
In this case, it would be wise to 
shrink the seven point scale to five. 
Osgood, in his lectures in the fifties, 
used to observe that studies suggest 
a nine-point scale for college grad- 
uates, seven for sophomores and fresh- 
men, five for high school students, 
three for less-then-high school educa- 
tion . . . , and perhaps two for members 
of the American Legion ("If'n yer not 
fer it, y* must be agin it") ! 

Statistical Cautions 



This is even less appropriate a 
place to presume to review the many 
caveats that have to do with designing 
studies and processing data. Best to 
get the advice of a competent statis- 
tician, and if you find one whom you 
can understand, put him on a commission 
basis for any revenue you might generate. 



All that I seek to do in this section is 
mention a few concerns that will influ- 
ence the design of input hardware. 

Nu mber of Judges to be Sampled . 
This is an important concern because a 
product or message testing agency will 
need to know how many response stations 
to build. Generally, the minimum number 
of subjects (for parametric statistical 
measures, fewer are needed for "non-par- 
ametric" tests) is 25 or so. At Kent 
State, my Lab was designed for 24 re- 
sponse stations, partly because the room 
won't hold many more people and because 
the mainframe of a previous generation of 
response stations lent itself to multi- 
ples of 12. (Those earlier machines used 
interlocked multiple pushbutton switches 
and stepping relay counters, but the 
present system, having 75154 IC's in the 
I/O interface to the computer, suggests 
multiples of 16, and 32 would be a better 
number of stations) . 

But neither 24, 25 or 32 are actu- 
ally needed. A rating service could get 
by on quite a few less because the sta- 
tistical caution to be observed has to do 
with the number of subjects , not stations, 
If one is willing to give a number of 
presentations to a smaller number of sub- 
jects each time, then six, or ten or some 
similar number of stations would be ad- 
equate. The trade-off is between time 
and money: more stations are more expen- 
sive but quicker, while saving construc- 
tion time and money will later eat up 
testing time. In the final analysis, how 
large a room (for screening messages) , 
how much capital one has to invest and 
how much business one might expect should 
all help determine an optimum number of 
stations to build. 

Preservation of Interval Assump- 
tions . What's involved here is the 
difference between nominal (by category) , 
ordinal (rank order) and interval judg- 
ments. Scales are assumed (hoped?) to 
be equal- interval means of measurement; 
that is, the distance between 3.0 and 2.0 
should be the same as between 1.0 and 2.0. 
With pencil and paper it is easy to sug- 
gest this to subjects, but electro-mech- 
anical devices need to be more carefully 
selected. Dials are troublesome, especi- 
ally if connected to potentiometers. 
"Pots" are analog devices; what is needed 
is a digital selector. A dial connected 
to a wafer switch is better, but even 
with this the labelling of the dial could 
cause response problems. Our solution 
at Kent was a bank of seven MicroSwitch 
units, as will be demonstrated in the 



WEST COAST COMPUTER FAIRE 



297 



BOX 1579, PALO ALTO CA 94302 



hardware discussion. 

Exclusion of Multiple or Ambigu- 
ous Responses . Each given scale should 
receive one, and only one response. In 
pencil-and-paper tests, subjects are 
instructed to put their "X" marks on 
the lines, not between them, and put 
no more than one per scale. Here is 
one place where a machine substitute 
can be much more efficient than pen- 
cil-and-paper scoring, at the cost of 
a little care in design. Human scor- 
ers must spot and then throw out vio- 
lations of these conventions, whereas 
a machine can be designed to prevent 
such actions from occurring. More on 
this shortly. 

Hardware Design Considerations 

It is not the purpose of this 
section to provide full details for 
the construction of a given design of 
input response station; even if space 
permitted such specifics, it is doubt- 
ful that the same parts and materials 
would be obtainable, perhaps not even 
desirable to others. Thus, no schem- 
atic wiring diagrams will be provided; 
instead, I shall suggest how certain 
choices were adapted and useful in 
our situation. To facilitate the 
discussion, reference will be made to 
the several photographs at the end of 
the text. 

Target Concepts . Once selected, 

target concepts are probably best 

photographed in 35mm or Ik square for- 
mat transparencies and projected onto 
a screen adjacent to the message or 
object being judged. At Kent we have 
a 4 .by 6 foot rear projection screen 
in one wall, onto which several pro- 
jectors may be directed. Thus, the 
concept language may be put on the 
same screen with still visuals, 16mm 
movies, or television monitors (or 
even live performances) can be arranged 
nearby. If only a few concepts are to 
be judged, then overhead transparency 
production, perhaps by the thermal 
process, is quicker and cheap. Also, 
it is not necessary to use rear pro- 
jection (we do simply to keep the noisy 
equipment out of sight and earshot); 
all that is required is to be able to 
display the message (e.g., a film or 
videotape) along with enough "concept" 
language to focus the judgments of an 
audience (e.g., "If I were to use the 
product in the message, I would prob- 
ably find it: ") . The blank 

at the end of the concept statement 



is for the various scale judgments de- 
sired (e.g., "good-bad," "worthwhile- 
worthless," "strong-weak," "active- 
passive," etc.) As can be seen by the 
comparative length of the language in- 
volved, projection onto one screen com- 
mon to all subjects is a practical nec- 
essity --to fit so much into each re- 
sponse station would require a fortune 
in 5x7 matrix alphanumeric LED R/O's or 
a CRT in each station. 

Judgment Scales . Judgment scales, 
on the other hand, while they might also 
be projected onto a common screen (and 
unusual ones would have to be) could, we 
found, be put into each response station: 
they are short (one word at each end of 
the scale) and a handful tend to recur in 
much of our research. As Figure 1 re- 
veals, the arrangement of the "business 
end" of each response station is an 
electronic and mechanical translation of 
the geometry of a single scale as it 
usually appears on paper-and-pencil 
tests, e.g.; 

good : : : : : : bad 

The squarish windows on either end, 
slightly separated from the bank of 
seven rectangular push-buttons are 
actually small projection screens for 
I.E.E. numeric readouts, originally con- 
taining a piece of film with "0-9," "M" 
and a red filter. What we did at Kent 
was to substitute a new film negative 
into the optics of each readout which 
now projects the scale designations we 
choose. In our case, we finally chose 
the following bi -polar adjectives as 
being of most utility for us: 

Left Hand Readouts Right Hand Readouts 
^ Bad 
Weak 
Passive 
Unbelievable 
Uncertain 
Impossible 
Unpleasant 
Disagree 
Unaware 
Unclear 
Wrong 
Lifeless 



Good 

Strong 

Active 

Believable 

Certain 

Possible 

Pleasant 

Agree 

Aware 

Clear 

Right 

Lively 

Although there are only twelve apertures 
in each film/optic sandwich, we actually 
have a total of 13 scales, as a bit of 
diode circuitry allows us to oppose "cer 
tain" with "impossible" to get a full 
p.=0 to p.=l range on one scale. 

Identifying the Intervals . Identi 
fying the intervals between scale ex- 
tremes gave us fits for some time, until 
we hit upon a novel, but simple, non- 



WEST COAST COMPUTER FAIRE 



298 



BOX 1579, PALO ALTO CA 94302 



verbal way of communicating any of the 
various qualifiers discussed above. We 
could have inserted Xerox or Thermofax 
etched transparency film into each of 
the translucent caps for the seven Mi- 
croSwitch [4] units, but this would re- 
quire changing caps whenever a differ- 
ent set of qualifiers was used. We 
can still go this way for use of the 
seven selectors as nominal categories 
but since most of our work is with 
interval scaling we chose, instead, 
to leave off all language, and com- 
municate degrees ("very strongly," 
"strongly," "slightly") by the in- 
tensity of the cap, as illuminated 
by the #327 bulbs located behind it. 
This was easily accomplished by a re- 
sistor network, resulting in the +3 
to -3 appearance in Figure 1, and 
the 7 to 1 look in Figure 2. One 
bulb and resistor network is used 
for each of these two aspects, with 
the third bulb (through a red fil- 
ter) on all seven switches serving 
as a "stop" warning. The fourth 
bulb signals when only the extreme 
and middle positions are active and is 
controlled by a nearby spring-loaded 
lever switch (for 3-degree judgments, 
a more practical number for contin- 
uous judging during a longer message) . 

Preservation of Interval Assump- 
tions . Preservation of interval as- 
sumptions is, we hope, accomplished 
by the symmetry of 7 identical push- 
buttons, ranging in a row from one 
scalar extreme to the other. This 
configuration also seems to remove 
possible confusion when a -2 PB cap 
may appear to have almost the same in- 
tensity as the -1, as will sometimes 
happen with bulb aging. The subject 
sees the pattern of the whole scale 
and seems to understand the idea, even 
without elaborate and lengthy verbal 
instructions which is one of the pains 
of paper-and-pencil testing. 

Exclusion of Multiple or Ambigu- 
ous Responses . Exclusion of multiple or 
ambiguous responses is accomplished by 
the design of both the input sampling 
I/O and the interconnection of the 
bank of seven switches internal to 
each unit. Multiple responses are ex- 
cluded (except when they are desired, 
as in sequentially judging continuous 
phenomena) by a controlled sequence of 
activities: 1) present message stimuli 
(with a concept and scale) to audience 
(e.g., activate the advance on a slide 
projector); 2) wait a suitable period, 



perhaps 15-20 seconds, for subjects to 
arrive at their judgments (during this 
period, they may change decisions al- 
ready entered into a unit simply by se- 
lecting, and pressing, another switch)-- 
no data is recorded until the end of 
this period, when 3) a selector circuit 
samples each of the 24 response stations 
in turn, sweeping all units once within 
a few milliseconds, then 4) the "hold- 
in" voltage to the coils on the Micro- 
Switch units is interrupted momentarily, 
at which time all stations are re-set, 
and the next message, concept and scales 
are selected and presented for judgment. 

Ambiguous responses are excluded 
by means of the electrical bail circuit 
through which the MicroSwitch units are 
interconnected. This circuit simulates 
inter-lock latching and "lockout" 
features of our previous banks of mech- 
anical switches, whereby pressing one 
switch releases any other, and it is 
impossible for two or more switches to 
be activated at the same time. 

Conclusion 

There are a number of advantageous 
features of the system presently in use 
and described here which have made the 
time and effort of design and construc- 
tion worthwhile to us. Despite what 
may seem to be a rather kluge-like 
contraption (the innards are pictured 
in Figure 3), it works! The case was 
fabricated of aluminum and designed to 
clamp onto a standard classrfom desk -- 
when so attached, it is so sturdy that 
the desk can be lifted by the response 
box. Data lines, power and control 
lines number 30, contained in a 36 con- 
ductor cable from each station to an 
interconnect mainframe; the large 200 
pin socket seen in the photographs 
allows testing and access to various 
circuit points without taking apart the 
two halves of the case. 

The advantages of this design, 
aside from meeting the cautions and 
considerations previously discussed, 
make the unit convenient, easy and fun 
to use. This last quality is of no 
small importance when subjects are asked 
to supply a number of responses at one 
sitting. Paper-and-pencil work is dull 
and tiring, but units such as these, 
while not as fully entertaining as Artoo 
Detoo, are nonetheless somewhat re- 
sponsive, and thus "alive." For ex- 
ample: the buttons are not only large 
and easy to hit, they are differentially 
lighted, and when any one of them is 
pressed lightly, a special circuit act- 
ivates the "pull-in" coils of the Micro- 



WEST COAST COMPUTER FAIRE 



299 



BOX 1579, PALO ALTO CA 94302 



Switch units [4] thus completing the 
action with a slightly perceptible 
tactile feedback. The same coils al- 
so serve a "hold- in" function, by 
means of a modified electrical bail 
circuit, enabling the latching and 
lock-out features, and allowing all 
activated switches to be re-set sim- 
ply by opening the common 28 volt 
line to all units. Simultaneously 
with the self-completion action of 
the pull-in coils, the response unit 
signals to the subject (and contin- 
ues to remind him until the data is 
recorded and all units are re-set) 
which scale division he chose. This 
we accomplished, not by the usual 
and obvious alternative of turning 
on a lamp under the chosen switch 
cap, but by turning off all the 
other six lamps (see Figure 4 for 
an example) . 

While our experience with the 
design described here has been gra- 
tifying, it is only one of many 
possible hardware implementations 
for input devices with which to con- 
duct microcomputer-based consumer 
attitude research. Advancing el- 
ectronic technology challenges us to 
develop response units which would 
be equally or more sophisticated in 
their functions, but simpler inter- 
nally and with a smaller component 
count. As such devices emerge, small 
system computerists will be increas- 
ingly enabled to conduct profitable 
audience and market research. 

References 

1. More information on this facility is 
available in "The Kent State University 
Laboratory for Research and Instruction 
in Rhetoric and Communication: A Report 
on the Rationale of its Design, State of 
Development, Capabilities and Potential 
for Functional Growth" (1972, 1976). This 
report is available from H. P. Munro, 
School of Speech, Kent State University, 
Kent OH, 44242. 

2. Charles E. Osgood, George J. Suci, 

Percy H. Tannenbaum. The Measure- 
ment of Meaning (Urbana: Univer- 
sity of Illinois Press, 1957). 

3. Jay Sharbutt. "Guinea Pig: TV 'Test- 

er' Rates Evening 'Very Dull. 1 " 
Akron Beacon Journal , January 2, 
1978 

4. The switch units which we managed to 
obtain (as electronic "surplus" material) 
are from MicroSwitch, Series 2 Rectangular 
Display Modular Lighted Pushbutton Switch/ 



WEST COAST COMPUTER FAIRE 



Indicators. The Operator/ Indicator Housing type 
is #2C69, and the switch module was #2D172, 
modified to momentary rather then alternate 
action and using only DPDT contacts. Mounting 
barriers (2B-) were not used so as to provide 
the better appearance of a continuous scale 
with closely segmented intervals; there is 
enough clearance between display screens (caps) 
to permit easy operation without fouling, if 
the mounting cutout (in our case, for a bank of 
seven switches) is carefully measured. 




Figure 1 




Figure 2 




Figure 3 




300 



Figure 4 



BOX 1579, PALO ALTO CA 94302 



IMPROVING NAME RECOGNITION AND COORDINATION IN VIDEO CONFERENCING 

David Stodolsky, PhD, Center for Educational Research 
Stanford University, Stanford, CA 94305 415 494-2106 



Abstract 






Current techniques for coordination of 
group video conferencing are derived from 
broadcast applications. Conferencing typi- 
cally occurs between two locations, and often 
a number of support personnel are required for 
equipment set-up and operation. A computer- 
based mediation system can be used to resolve 
problems of technical and social coordination 
while reducing costs and improving name recog- 
nition. 

Conferees indicate their wish to speak by 
pressing a switch, and the computer at their 
location transmits this request to the location 
chairing the conference. The request is queued 



Video conferencing opens the prospect for 
a new era in representative democracy. The 
full potential of this technology, however, 
requires careful analysis of its current limi- 
tations. These limitations are not technolog- 
ical, but stem from the non-interactive mode 
of operation typical of the video medium. 

While the current video techniques are 
relatively easily extended to interaction be- 
tween two locations, multiple location confer- 
ences have proved problematic in past experi- 
ments. If the full capabilities of the media 
are to be realized, coordination techniques for 
multiple location conferences must be improved. 

Automation of many functions provides an 
ease of use and flexibility which could facili- 
tate acceptance of the technology. For inst- 
ance, it would make practical the placement of 
interactive stations within or near representa- 
tives' offices. This distribution of stations 
and the ability to activate the system on short 
notice, since few support persons would be ne- 
cessary, could be crucial in increasing utili- 
zation of video conferencing technology. 

Increased availability of communication 
satellite channels, perceived need for a closer 
relationship between representatives and their 
constituents, and possibility of substantial 
economic savings have resulted in experimental 
use of video conferencing by Congress (Carter, 
19/7). The technique to be described here 
could be used to improve name recognition and 
coordination in such conferences. The method 
could reduce the costs of staff support by auto- 
mating certain functions normally performed by 
camera crews and their backup persons. Previous 



by a mediation program. When the previous speak- 
er terminates, the new speaker's camera is acti- 
vated, and the speaker's name is automatically 
displayed below the image. Conflicting requests 
are typically resolved according to preprogramm- 
ed rules; however, the chairperson may override 
the automatic resolution mechanism at will. 
Computers at each location are responsible for 
set-up and self-testing as well as camera acti- 
vation and name display. The resultant system 
permits flexible interaction among participants 
while balancing participation and improving the 
quality of deliberative decisions. 



research in teleconferencing has indicated that 
automatic switching may be preferred in telecon- 
ferencing (Bretz & Dougharty, 1974; Stodolsky, 
1976). The operation of a Resolving Bridge for 
teleconferencing is probably best explained from 
the user s viewpoint. Prior to teleconferencing, 
each user s name is typed onto the system con- 
trol keyboard. (With an appropriate card read- 
er connected to the system, members of the House 
of Representatives could merely insert the card 
used with the House voting system to enter their 
names.) When the conference is called to order, 
the chairperson triggers the system initializa- 
tion procedure. Initialization is equivalent to 
a roll call. A person's name appears on the 
video display, and that person presses a switch 
at his position. The person could also state 
his name to indicate proper pronunciation and 
confirm correct name assignment. (Stodolsky 
(1976) employed an error-checking procedure to 
ensure a one-to-one correspondence between names 
and conferencing positions.) 

During conferencing, the same switch is used 
to request the floor. When a speaker is select- 
ed, his name appears on the bottom of the screen, 
and his microphone is simultaneously activated. 
Camera pointing could also be a function of 
speaker selection if the necessary procedures 
were followed during initialization. 

With the Resolving Bridge, speaker selec- 
tion is normally automatic but manual override is 
available to the chair at any time (Cohen, 1976; 
Stodolsky, 1976). The chair may also choose 
the rule for speaker selection. The selection 
rule may be based upon principles of priority, 
precedence, or equal time (Stodolsky, in press) 



WEST COAST COMPUTER FAIRE 



301 



BOX 1579, PALO ALTO CA 94302 



In a previous experiment (Stodolsky, 1976) 
the rule came into action only when two or more 
persons were simultaneously requesting the 
floor. For example, the Equal Time Resolution 
rule would always select the person who had 
spoken the least time thus far in the confer- 
ence. Rules of this sort are most helpful when 
there are many conference participants. 

The many-participant conference can be of 
two types, one in which participants are each 
at different locations and one in which they are 
grouped at remote locations. When each partici- 
pant is at a different location, the ability to 
switch rapidly from one image source to another 
is essential. When participants are grouped at 
a remote location, the video image can display 
a panel, thereby sacrificing image resolution 
for technical simplicity. With appropriate 
initialization, the Resolving Bridge mechanism 
can improve effective resolution in this case. 
The full size image and name display contin- 
uously available during conferencing improves 
name identification and recognition. The auto- 
matically triggered switching improves coordi- 
nation in conferencing by eliminating delays 
and permitting rapid interchanges among partic- 
ipants. 



Acknowledgments 

Preparation of this paper was in part sup- 
ported by Alcohol, Drug Abuse, and Mental Health 
Administration National Research Service Award 
1 F32 MH051 64-01 from the National Institute of 
Mental Health. 

References 



The Resolving Bridge may also have an important 
impact upon the emotional tone and the perfor- 
mance of a deliberative body. The above men- 
tioned Equal Time Resolution rule, for instance, 
tends to balance participation and assist more 
reticent individuals in gaining the floor. This 
influences both the perceived fairness of the 
proceedings and the likelihood that relevant 
information will be contributed by such persons. 
Even a simple rule restricting freedom to inter- 
rupt has been found to improve the quality of 
deliberative decisions (Morley & Stephenson, 
1969). Short (1976, p. 93) confirms that greater 
formality in deliberative procedure tends to im- 
prove performance. The Resolving Bridge for 
teleconferencing is a powerful method for 
structuring deliberations by increasing formality 
without sacrificing flexibility. 



Bretz, R., & Dougharty, L. A. Two-way TV confer- 
encing for government: The MRC-TV system . 
(R-1489-MRC). Santa Monica, Ca: Rand, April 
1974. 

Carter, L. J. Videoconferences via satellite: 
Opening congress to the people? Science , July 
1977, 191(4298), 31-33. 

Cohen, D., and ISI Research Staff. Network Secure 
Communication. In ISI Research Staff, A Re- 
search program in computer technology, annual 
technical report, July 1975-June 1976 . Manna 
del Rey, Ca.: University of Southern Cal i f or- 
nia, Information Sciences Institute, July 1976, 
(ISI/SR-76-6). 

Morley, I. E., & Stephenson, 6. M. Interpersonal 
and inter-party exchange: A laboratory simu- 
lation of an industrial negotiation at the 
plant level. British Journal of Psychology, 
1969, 60(4), 543-545. 



Short, J., Williams, E., & Christie, B. The 
sociology of telecommunications . London: 
Wiley, 1976. 

Stodolsky, D. Machine-mediated group prob- 
lem-solving: Therapy, learning, perfor- 
mance (Doctoral dissertation, University 
of California, 1976). Dissertation 
Abstracts International , 1976, 37, 1949- 
B^ (University Microfilms No. 76-19,633). 

Stodolsky, D. Group conferencing with auto- 
matic mediation. In J. Belzer, A. G. 
Holtzman, and A. Kent (Eds), The encyclo- 
pedia of computer science and technology . 
New York: Marcel Dekker, in press. 



WEST COAST COMPUTER FA1RE 



302 



BOX 1579, PALO ALTO CA 94302 



THE BEDSIDE MICROCOMPUTER IN THE INTENSIVE CARE NURSERY 



Robert C. A. Goff, M.D. 



„,.,, , . Fellow in Neonatology 

Children's Hospital Medical Center of Northern California 
51st and Grove, Oakland, California (415) 654-5600 ext 



Abstract: 



Software has been developed to enable 
Pediatricians and Neonatologists to 
maintain bedside microcomputers in the 
Intensive Care Nursery, providing 
instant processing of, and access to 
the voluminous laboratory data and evnt 
summaries generated by each infant. 
The data is stored in a problem-oriented 
format, and may be accessed with an 
inquiry to any particular problem. The 
program is written in North Star 
extended disc BASIC (version 6, release 
3, — which utilizes random disc file 
access) and is implemented on a SOL/20 
Terminal Computer with 48K RAM, and 
triple North Star Microdisk drives. 

Introduction 



The use of computers in the 
Intensive Care Nursery is not a new 
idea, but I am unaware of previous 
attempts to use a microcomputer in such 
an application. This paper will 
discuss the structure of the software, 
and the reasons for both the 
programming language used, and the 
selection of the hardware 
configuration. 

As a general background, one must 
realize, first of all, that infants in 
an Intensive Care Nursery (ICN) are 
usually highly unstable patients with 
multiple, complex medical problems, 
when compared to older patients in 
other hospital settings, 
as a result of 
consideration, infants 

generate an overwhelming ^ ^ 

both data and narrative description of' 
clinical events, conditions, and 
procedures. As an example, the daily 
progress note written in a typical 
patient's chart (in most areas of the 
hospital) will require, perhaps 8 or 10 
lines on one page of his chart, and 
will include all new laboratory results 
and procedures, as well as the 
patient's clinical condition for that 
day. In the ICN, however, it is not at 
all uncommon to find a progress note 
for one day requiring as many as 2 to 3 
full pages of discussion and laboratory 



Secondly, and 

this first 

in the ICN 

quantity of 



values. In addition to this voluminous 
daily documentation, there is at the 
bedside of each infant a flow chart of 
all the daily laboratory results, and 
the daily computations of fluid intake, 
fluid intake per kilogram per day, 
calories per day, calories per kilogram 
per day, urine output per kilogram per 
hour, etc. 

While today, with no less than a 
Herculean effort, we are still capable 
of managing and reacting appropriately 
to the reams of information generated 
by our ICN patients ( up to about 40, 
at full census), we are realizing that 
the current trend in Neonatology is 
toward more laboratory tests per infant 
and more documentation of the 
increasing number of proceures required 
by each infant. if this trend 
continues, then it will be virtually 
impossible to keep apace of this 
information deluge. Future trends 
aside, it is currently a major task, 
each time one of our infants is 
discharged from the hospital, to review 
his records (often consisting of 3 to 8 
volumes of hospital chart) , understand 
his 2 to 3 month hospitalization, and 
then dictate a usefully concise and 
accurate summary. Our present 
practice is to dedicate 1 to 3 hours in 
preparing each summary, with our 
nursery requiring, on the average, 2.5 
summaries per day. 



WEST COAST COMPUTER FA1RE 



303 



The 
obvious- 
computer 
both 

descript 
to any 
daily in 
of disc 
patient ' 
appropri 
discharg 

Software 

The program, written in North Star 
BASIC, is fairly simple in structure, 
but, because of the multiplicity of 
types of data manipulations required, 
and the extensive text capability 

BOX 1579, PALO ALTO CA 94302 



solution to this porblem is 
-to utilize some form of 

processing and synthesis of 
laboratory data and event 
ion to maintain instant access 

past information, to accept 
put of data, and, at the time 
harge, to abstract from the 
s file those pertinent items 
ate for inclusion in a 
e summary. 



required of a narrative summary, the 
program length is projected to run to 
about 60K bytes, exclusive of the space 
needed for variable manipulation. As a 
result of its length, the program is 
structured in the form of disc files, 
directed by an executive program which 
chains into RAM whichever sub-program 
is called. The program resides in one 
disc drive, and stores all patient data 
on the other disc (a triple drive will 
enable the use of one microcomputer for 
every two infants) . The organization 
of the sub-programs is a modified 
version of the Problem Oriented Format, 
now popular among physicians, and 
extensively used in Intensive Care 
Nurseries across the country. Rather 
than being oriented strictly to patient 
problems, the sub-programs are 
representative of body systems. This 
approach allows the formatting of 
virtually every type of clinical data 
or problem, and will permit easy 
access, at a later date, to any 
particular information required by 
patient follow-up or retrospective data 
analysis. 

It should be noted that, because 
of the relatively stereotyped set of 
clinical problems common to premature 
and sick infants, an estimated 90 to 
95% of all data and event summary 
information can fc>o specifically encoded 
for later search and retrieval. The 
remaining 5 to 10% of the information 
would be accessable only by manually 
search i ng a ca tegor y such as "OTHER" , 
included under each body system. This 
situation is not the case with general 
medicine or, for that matter, general 
pediatrics, in which the multitude of 
commonly encountered clinical entities 
would require a much more complex 
structure of software in order to 
accomplish a comparable textual product 
with comparable data access 
capability. 

Executive Routine: This is a short 
program which displays on the CRT a 
menu of the major sub-routines of the 
system. If the hardware consists of 
three disc drives, for use on two 
different patients, then the patient is 
selected within the executive routine. 
At this point, the physician chooses 
the particular body system of interest, 
and the executive chains in the 
sub-routine which has been called. 
With the sub-routine loaded, the 
physician is presented with a menu of 
routines included, such as: 



WEST COAST COMPUTER FAIRE 



1. Enter Data 

2. Enter Events 

3. Review Data and Events 

4. Plot Data 

5. Print Textual Summary 

6. EXIT 

On selecting, for example, #2, the CRT 
displays a menu of events related to 
the chosen body system. When an event 
has been selected, the computer will 
then request the time and date of the 
event, and then compute the infant's 
age at the time of the event. This is 
now displayed for confirmation, and if 
approved, will be recorded in the 
appropriate file on the patient's disc. 
An opportunity is given to record 
additional events, then control is 
returned to the initial sub-system 
menu. On exiting the sub-system, the 
executive routine is chained into RAM, 
and it is then used to access farther 
sub-routines. 

Sub-routines : The major 
sub-routines serve to format the data 
and events into either random or serial 
disc files, whichever is most easily 
manipulated for the given type of 
information. The plotting functions 
are capable of producing graphs of 
data, plotted simultaneously with 
certain event markers, as well as 
standardized curves for reference. For 
example, the plot of the growth chart 
will, on a single page, plot three 
graphs: weight, length, and head 
circumference, each with appropriate 
standard percentile curves, and each in 

the format of. the Babson growth char t . 

Because of the ease of generating these 
curves, and their usefulness to the 
physician who follows the infant after 
discharge from the ICN, they may be 
included in the final discharge 
summary, and available to the referring 
physician immediately. Additionally, 
attempts are being made to represent 
complex data, such as arterial blood 
gases and ventilator settings in easily 
interpretable graphic form. 






Text: Most of the infant's 
admission history (primarily prenatal 
and maternal history) is encoded, and 
at the time of review decoded, by the 
History sub-routine, so that most of 
this textual material is confined to 
the program disc, and does not require 
space on the patient's disc. However, 
uncommon items of history can be typed 
in as text, and are stored as strings 
on the patient's disc. This is also 
the case with each of the other 
sub-routines. The finished discharge 



304 BOX 1 579, PALO ALTO CA 94302 



summary will be in the form of a 
standard textual discharge summary, and 
may optionally be formatted as a 
letter . 

An additional feature of the 
output capability of the software is 
that it can print the forms (presently 
filled out by hand) which are required 
by the State of California for each 
infant who is transported from a 
referring hospital to an Intensive Care 
Nursery. 

Diagnoses ; Each sub-routine 
posesses considerable diagnostic 
capability. Any diagnoses which can be 
made solely on the basis of laboratory 
data and encoded events or encoded 
history, will automatically appear in 
the summary as discharge diagnoses. 
While the attending physician has the 
option of deleting any of these 
diagnoses, or adding other diagnoses to 
the list, it is anticipated that by far 
the majority of diagnoses will be 
accurately made by the program, and 
will maximize future access for 
statistical study of patient care 
information. An additional feature of 
the diagnostic algorithms is that any 
suggestive (but not conclusive) 
diagnoses will be pointed out to the 
physician as possibilities which may 
warrant further clinical or laboratory 
investigation. (Once again, the rather 
circumscribed nature of neonatology 
allows this capability to be 
implemented on so small a system.) 

Choice of Programming Language 

Only two languages were considered 
in setting about this project: 8080 
Assembly Language, and BASIC. The 
former would allow for a much more 
concise program structure, considerably 
less RAM, and more rapid program 
execution. BASIC was chosen instead, 
for several reasons. Most importantly, 
it would allow the program to be 
quickly modified to run on just about 
any hardware system, including 
time-shared systems and the large 
systems available at most university 
hospitals. A second advantage to BASIC 
is that it would allow other users to 
easily modify any of the graphic, 
textual, or diagnostic routines to meet 
their exact needs or preferences. 

North Star extended disc BASIC 
(version 6, release 3) was chosen in 
particular, for three reasons. First, 
it is an extremely powerful and easy to 



WEST COAST COMPUTER FAIRE 



use BASIC. Second, it posesses the 
CHAIN function and extensive string 
manipulation capability. Third, this 
was a natural choice to use with the 
North Star disc drives, discussed 
below. 



Hardware 

The hardware chosen cons 
SOL/20 Terminal Computer with 
of RAM, a three-drive No 
Microdisk drive combination, 
CRT monitor, and a Diabl 
receive-only "daisy wheel" pri 
the system is to be used for 
patient at a time, or by 
patients, changing discs 
patient, then a dual disc dr 
suffice. 



ists of a 
48K bytes 
rth Star 

a Sanyo 
o 1610-3 
nter. If 

only one 

several 

for each 

ive will 



The choice of the SOL/20 was based 
on two major factors. The first is 
size. The Sol will fit comfortably at 
the bedside in the ICN, whereas most 
other microcomputers are simply too 
bulky. The enormous backplane capacity 
of the larger units is not needed. If 
the 48K RAM is all on one high density 
memory board, then the SOL will have 3 
empty slots for further hardware 
development. The second major factor in 
the choice of a SOL is its 
user-oriented keyboard, and lack of a 
front panel. The optional numeric 
keypad is a tremendous advantage when 
entering large volumes of laboratory 
data. Perhaps a third consideration is 
the ease with which the SOL may be set 
in a "terminal mode" and networked to a 
laboratory mini-computer, for direct 
data acquisition. (A network of 
micro-computers is certainly in the 
near future for most hospitals.) 

In considering the various disc 
drives available, again two facotrs 
were of greatest importance. First, 
once again, was size. The large disc 
drives simply require more room than is 
available presently at the bedsides of 
ICNs. The North Star drives can be 
tucked away just about anywhere. 
Second, was flexibility in 
interchanging one patient's data, at 
the time of his discharge, for that of 
another patient. A large disc would be 
wasted if it contained the information 
of only one patient, and flexibility 
would be lost if a large disc were used 
for more than one patient. The 90K 
byte capacity of the 5 inch disc seemed 
to be only a slight overkill, and could 
easily justify the use of one disc per 
patient. 



305 BOX 1 579, PALO ALTO CA 94302 



I The software was originally 
■developed using a DECWRITER as the hard 
■copy output, and all graphics were 
■implemented so that any serial printer 
would be capable of generating entirely 
adequate graphs. Chosing a Diablo 
"daisy wheel" type printer was prompted 
by not only the desire for more precise 
graphics, but also the preference of 
most physicians for reading a solid 
type font, rather than dot-matrix. The 
printer, whatever the type, is not 
intended to be at the bedside in the 
ICN. It should ultimately be a part of 
an additional system located in some 
other area of the nursery or nursery 
offices, and would be used solely for 
printing the discharge summaries. This 
additional system can easily be cost 
justified by using it the remainder of 
the time for inventory, scheduling, 
accounting, and numerous other tasks. 
Alternatively, the printer may be 
placed on a mobile cart, and rolled to 
the bedside unit for use at the time of 
discharge. 

Costs 



The system described, including 
the Diablo printer, should cost 
approximately $9000.00 with all 
necessary supplies and sales tax. 
Substituting a DECWRITER for the Diablo 
1610-3 will drop the cost by about 
$1200.00. These prices include the 
cost of 100 floppy diskettes — $450.00 
(for a census of 40 patients) . 

Justifying such an expense should 
be in the light of the cost of typical 
monitoring electronics used in the ICN. 
As an example, the PSI infant monitor 
(which monitors heart rate, respiratory 
rate, blood pressure, heart rate trend, 
respiratory trend, and blood pressure 
trend, along with appropriate alarms) 
runs in the neighborhood of $10,000.00 
per bed. Less expensive monitors are 
still in the $5,000.00 range. By using 
one triple disc drive SOL system for 
every two beds, the cost is about 
$2,200.00 per bed, plus the cost of one 
printer spread over the entire nursery. 
These figures, of course, do not 
measure the improvement in patient care 
that would result from instant data 
access at the bedside, as well as 
increased physician time attending to 
matters other than a dictaphone. There 
is also a significant savings in 
medical transcription costs, by 
eliminating the need to transcribe 
lengthy ICN discharge summaries. 
Perhaps the greatest cost justification 
for a large referral center, such a 

WEST COAST COMPUTER FAIRE 



Children's Hospital in Oakland, is that 
by generating discharge summaries at 
the instant of discharge, the hospital 
will render better service to referring 
physicians, and certainly thereby 
improve community-hospital relations 
and physician-hospital realtions. 



Summary 

A genera 
micro-computer 
bedside compute 
Nursery is pre 
basic feature 
justification 
BASIC, and the 
combination, 
justifications 



1 description of a 
implementation of a 
r for the Intensive Care 
sented, with some of its 
s, and the authors 
for selecting North Star 
SOL/20-North Star Disc 
Costs, and cost 
are also discussed. 



Acknowledgements 

The author wishes 
Barry Phillips of Children 
Oakland, Peter Hollenbec 
Shop of Berkeley, Dr. Adam 
Osborne and Associates, 
of the Black Pine Circ 
Berkeley, and Bruce 
Berkeley, for their 
suggestions, and encourag 
project. 



to thank Dr. 
*s Hospital - 
k of The Byte 

Osborne of 
Adam Grossman 
le School 
Bargmeier 

assistance, 
ement in this 



306 



BOX 1579, PALO ALTO CA 94302 



AN AUTOMATED CONFERENCE MEDIATOR 

David Stodolsky, PhD, Center for Educational Research 
Stanford University, Stanford, CA 94305 415 494-2106 



Abstract 



A portable mini -computer based mediator, 
which facilitates speaker selection in con- 
ferencing is described. The system is a two- 
level communication network, permitting both 
anonymous and public responses. Up to 128 
response units permit anonymous inputs on 
short travel switches with positive confirma- 
tion by tone signals. Each response unit con- 
tains a microphone which feeds a voice -activated 
switch in the mini -computer interface. The pro- 
gram samples six bits of information from each 
unit, five bits from short travel switches, and 
one from the voice -activated switch. The micro- 
phone of the current speaker is selected by a 
BASIC program responding to switch inputs. 

The central controller consists of a PDP-8E 



Technological Advances in the Study of Group 
Interaction 



computer with 4,000 words of memory, floppy disk 
storage, and a video compatible display. A 
crystal controlled clock with storage provides 
the system with a millisecond timebase. All 
facilities are accessible from BASIC programs. 

The design objective was the creation of a 
tool for the study of automatically facilitated 
group interaction, which would not by its form 
induce limitations on group process. Precise 
delivery of tone and video displays and rigorous 
measurements of speech sequencing and voting 
behavior permit utilization of techniques 
previously limited to the psychology laboratory 
to be used routinely in the classroom. 



In recent years, three different types of mode. The more recent research attempts to use 

electronic systems for the study of group in- them in the on-line interactive mode to facili- 

teraction have been presented in the social- tate group dialog Sheridan, 1973), Problem 

psychological literature. Each of these systems solving (Chu, 1972), and learning (Rubin, 1970). 

represents a limited but significant technologi- They are limited in that they are broadcast 

cal advance in the study of group interaction. information systems; there is only one channel , 

One class of systems is devoted to the measure- a television type display or verbal announce- 



ment of speech sequencing, another to the col- 
lection of votes, and a third to delivery of 
stimuli to group members. 



ment to feed messages back to the group, 



The stimuli presentation system is the 
third direction of research on group inter- 
action (Aiken, 1965; Hastorf, 1966; Shapiro, 
1963). In these studies, the type and quantity 
of verbal production of group members is mani- 
pulated by private presentation of information 
(e.g., RED light, GREEN light) to each person 
in the group. The group is observed by raters 

rror and differentially 



The speech sequencing measurement systems 
(Cassotta, Feldstein & Jaffe, 1964; Haley, 1964) 
are directed, as the name implies, to the meas- 
urement of vocal behavior of group members. 
Their development was motivated by a need to im- 
prove the accuracy of data collection and to 

cope with the mass of data generated by detailed from behind a one-way mirror and ditterentia 
recording of speaker turn-taking behaviors. reinforced by the lights, which could^enote 

These methods do not attempt to analyze the fine "" " 

structure of vocal production such as tone, 
stress, or emotive quality of the voice. Their 
implementation is off-line so that no immediate 
feedback to the group members is possible as 
discussion proceeds. 



"good insight-poor insight" or other dimensions 
of interest. 



The student response or electronic voting 
system represents another avenue of development 
in the study of group behavior. The depression 
of a switch or turning of a knob is the measur- 
ed response in these systems. They have often 
I been used as data collection devices (e.g., for 
I the administration of tests) in the off-line 



WEST COAST COMPUTER FAIRE 



An integration of these types of develop- 
ment in a computer-based laboratory for the 
study of marital therapy has been reported 
(Thomas et al., 1973). This system accommo- 
dates only a few persons at once; lights are 
used for stimulus presentation and only a few 
buttons are available for responding. Vocal 
analysis is quite flexible using voice-oper- 
ated switches to collect sequencing data and 
raters to determine "faulting," "positive 
talk," and other parameters in conversation. 



307 BOX 1 579, PALO ALTO CA 94302 



[ Desi gn Objectives 

The primary objective in the design of this 
I system was the creation of a tool for the study 
of automatically mediated group interaction 
which would not by its form induce limitations 
[on group process. 

Classroom Environment . The design attempts 
to bring the advantages of the automated labora- 
tory to the classroom. To the researcher, the 
classroom setting is advantageous in that it 
provides groups of people in an environment 
which is less artificial than that found in the 
experimental psychology laboratory. To the in- 
structor, it provides a welcome relief to the 
logistical problems of the large classroom. Pre- 
programmed modules can administer tests with 
immediate feedback to the student and summary 
statistics to the instructor for the evaluation 
of test questions and identification of problem 
students. In the response system mode, the in- 
structor can obtain immediate feedback to lec- 
ture material. In the conversation mediation 
mode, classroom discussion can be facilitated. 

Response Units . Because of the expense 
involved in such a computer-based system, its 
use has previously been limited to a few people 
at any given time. The approach described in 
this paper uses standard computer components 
for a majority of its implementation. A sub- 
stantial economy is achieved, however, by the 
use of simple, hand-held response units, which 
can be easily constructed. The objective of 64 
response units was selected to meet classroom 
needs, where the system could serve as a conver- 
sation mediator and electronic voting machine 

and could aid in the administration of tests or 
experiments. The fully expanded interface 
accommodates 128 response units. 

Portability . The objective of a portable 
design is to permit use in different classrooms 
and in the laboratory. This feature combats 
under-utilization, a chronic problem with class- 
room response systems, in two ways. First, it 
permits the system to be placed at a location 
where it is likely to be used. Second, it per- 
mits easy rearrangement of seating patterns, an 
important variable in both teaching and research 
which greatly improves the system's flexibility. 

Voice Capability . The response unit was 
designed to permit voice communication and thus 
experiments in which people are visually and 
acoustically isolated. This feature is also 
useful in face-to-face groups and combats the 
problem of under-utilization of electronic 
response systems. A microphone and voting 
system is more likely to be used than just a 
voting system. The benefit of voice amplifi- 
cation in large groups is obvious even to those 



uninterested in voting. In some previous 
response systems, instructor/student dialog was 
limited by acoustical problems (Instructional 
Industries, Inc.). 

Design for Equal Participation . Most 
previous systems for the mediation of group 
interaction have, by their form, limited equal- 
ity of participation. A primary promoter of 
unequal participation in the large classroom is 
the public address system, which amplifies the 
instructor's voice. Not only does the instruct- 
or have a central position and authority, but 
his voice is enormously louder. Any system 
seeking to avoid imbalance in participation 
should provide each person with access to the 
public address system. 

Anonymous response capability has been 
demonstrated to facilitate participation in 
both voting and speaking (Sheridan, 1973; 
Dybvig, 1972). The design objectives for the 
response collection unit specified character- 
istics rarely encountered in a typical computer 
terminal or voting system. The unit had to 
permit private voting responses and speech 
transmission capabilities. 

Another limitation electronic voting sys- 
tems often foster is unequal participation via 
centralized control or private presentation of 
aggregated response information. Centralized 
control is countered by use of a computer which 
can provide centralized coordination and dis- 
tributed control. Private presentation is 
..avp.ide.d....by...S-i.mu.l..tan.eously presenting the aggre- 
gated information to all participants. The 
system can be configured for centralized control 
and private presentation of aggregated responses 
but this mode of operation is not forced upon 
the user by the hardware design. 

Confirmation . There is no fail-safe capa- 
bility in most electronic voting systems, and 
errors can accumulate without the knowledge of 
the operator or of the users. Private confir- 
mation of responses in an electronic voting 
system is a necessity. This feature is impor- 
tant both in order to control errors and to 
maintain confidence of users during voting. For 
full flexibility, maximal response rate, and 
tight error control, the system should be 
designed to simultaneously receive and confirm 
response, that is, have a full -duplex capabil- 
ity. 

Response Collection . Previous systems 
introduced limitations upon the rate users could 
transmit information because of the low response 
collection rate, limited alternatives, or lack 
of capability to transmit information simultan- 
eously on the public and anonymous levels. In 



WEST COAST COMPUTER FAIRE 



308 



BOX 1579. PALO ALTO CA 94302 



the system proposed below, the limitations on 
information transmission are due only to the 
inherent information processing capabilities 
of the users. 

One of the critical factors in the design 
of an electronic system is the selection of the 
total number of parallel response alternatives 
available to the users. Previous studies 
(Miller, 1956) have indicated that the amount 
of information transmitted for stimuli which 
vary on a single dimension is about 3.25 bits. 
As the number of stimulus dimensions is increas- 
ed, the amount of information which can be tran- 
smitted in a single judgment also increases. A 
four-dimensional stimulus can be transmitted 
with 5 bits of information. For a stimulus with 
seven dimensions, a maximum of 7 bits of infor- 
mation can be transmitted by the user. 

In use, the number of response alternatives 
is likely to be limited by memory for alterna- 
tive codes rather than by judgmental capacity. 
A response indicating one of 32 categories is 
learned relatively easily. Englebart (1965) 
found that personnel can readily learn an alpha- 
betic code on a five-bit device. 

Latency measurement may have application 
in the classroom, as the following computer- 
assisted instruction experiment suggests. Judd 
and Glaser (1969) found that there is some in- 
crease in latency if an item remains unlearned 
over a considerable number of trials, while 
there is a large and significant drop in latency 
from the trial of the last error to succeeding 
trials. "There is also an indication that laten- 
cy of the correct response begins to drop, while 
incorrect response latencies remain constant, or 
increase slightly on the last one or two trials 
prior to the trial of the last error" (Judd & 
Glaser, 1969). The study suggests that as the 
measure of correct response approaches its 
asymptote, the latency measure becomes relative- 
ly more sensitive. On the basis of latency, it 
appears that overl earning continues to have an 
effect beyond 10 trials past the TLE. "Post 
trial of the last error response latencies may 
provide means of determining the amount of over- 
learning practice which would be required for a 
particular subject to assume to assure a given 
degree of retention" (Judd & Glaser, 1969). To 
summarize, there are two major findings of the 
experiment: first, prior to the trial's last 
error, latency was a measure of test complexity 
but did not measure the development of associa- 
tive strength. Second, during overlearning, 
response latency did appear to measure the con- 
tinued development of associative strength. 
"Latencies may be quite useful in a situation 
in which instructional materials have been care- 
fully programmed, so that correct response prob- 
ability is always relatively high, but they 
would seem to be least useful in situations in 



which the probability of correct response is 
very low. . . . These findings have definite 
implications for instructional decision making, 
. . . While it is known that overlearning in- 
creases retention, the amount of overlearning 
to be provided has always been a relatively 
arbitrary decision. The capability of measur- 
ing response latency may provide a means of 
determining the optimal amount of overlearn- 
ing .. . for a particular student. ... If 
it were found that response latencies were not 
shortened by instructional programs designed 
to bring a student to a high level of profic- 
iency in a certain skill, the utility of in- 
structional procedures might be questionable" 
(Judd & Glaser). The instructor using an elec- 
tronic mediation system which can provide him 
with latency data would be in a superior 
position to evaluate instructional program 
effectiveness as compared to an instructor who 
had a system providing only correct response 
information. 

What degree of time resolution must the 
apparatus have to be limited in accuracy only 
by the user? In the studies by Judd and Glaser 
(1969), response latencies were measured with 
an accuracy of + or - one millisecond. One 
millisecond is near the minimal repetition time 
of the neuron and thus one the basic response 
subcomponents which would have to be measured 
in a psychological experiment. 

Voice responses contain a vast amount of 
information. They can be analyzed in terms 
of their duration and sequence, amplitude, 
tonal qualities, syntax, and semantics. Each 
of these possible measures overlaps the others 
in terms of the information it can yield. The 
above measurements are progressively more 
complicated to perform automatically. The 
minimal system requirement is the capability 
to determine whether vocalization is occurring 
at a given moment. This function is necessary 
if vocalization is to be used as an implicit 
request for the group's attention, as is the 
case in unassisted conferencing. Similarly, 
the cessation of vocalization is useful as a 
signal of relinquishing the group's attention. 

An unobtrusive system must identify a 
speaker and enable the speaker's microphone 
within a psychological moment (approximately 
1/10 second) so that it appears that the 
speaker's line is open whenever the person 
shes to address the group and is permitted to 
so by the rules of discussion. 

The ability to detect voice onset and off- 
set yields the ability to collect patterns of 
turn-taking within a group. These patterns 
can yield valuable information about the 
group's emotional tone (Haley, 1964). Accurate 
determination of vocal patterns within a single 



WEST COAST COMPUTER FAIRE 



309 



BOX 1579, PALO ALTO CA 94302 



speaker's conments can yield information as to 
emotional tone of that individual. Time reso- 
lution of 1/10 second is adequate to deter- 
mine vocal patterns both within a given indivi- 
dual's comments and between vocalizations of 
different individuals. 

The basic device I have specified thus far 
would accept 5 bits of information simultaneous- 
ly and resolve the input to within a thousandth 
of a second. No human, however, can transmit 
5,000 bits of information per second, though 
this is not considered a high data rate for a 
computer. The reaction time of a person on a 
task is related to the amount of information 
transmitted. The currently accepted function 
for disjunctive reaction time is T = A + BH, 
where H is the amount of information expressed 
in bits, transmitted by the subject per past 
response (Judd & Glaser, 1969). Nominal values 
are: A = .2 sec, B = .2 sec/bit. 

The trade-off between reaction time and 
information transmitted results in a upper limit 
of 50 bits of information per second transmitted 
from stimulus to response (Hyman, 1953). In case 
of user errors, less information is transmitted; 
thus, the keypress rate may exceed this level. 
In one experiment, even cases where subjects 
transmitted well below the potential information 
transmitted by errorless responding, the reaction 
time was linearly related to the potential infor- 
mation in the task (Judd & Glaser, 1969). From 
the reaction time literature, it would be ex- 
pected that response latencies would be a linear 
function of the amount of information actually 
being transmitted, but the latency data appeared 
to be ..mo re a 1 i nea r fun cti on. of the amount of 
potential information in the task. 

The response rate may also diverge from the 
information transmission rate when previously 
learned sequences of user keypresses are deliver- 
ed at a high rate as a result of a single judg- 
ment. In no case has rate of actual responses 
exceeded 50 bits/ second, even for short periods 
(Flanagan, 1965; Posner, 1967). Thus a device 
capable of transmitting 50 bits/second with a 
resolution of 1 millisecond should not add any 
limitations to the rate of information processing 
in our man-machine system. The device described 
should accept 5 bits of information in parallel 
and transmit this data every tenth of a second. 

Software . A crucial human factors decision 
in any automated system is the trade-off between 
complexity and flexibility in operation. In 
many computer systems, the user has to master 
many levels of complexity before he can effect- 
ively make use of the apparatus. Typically, 
the user must master the operating system, an 
editor, a programming language, and often the 
machine language and even hardware details. 
If the system cannot operate independently, 



the user must learn the communication protocol 
of yet another machine. These complexities 
limit effective utilization of a system. 

In order to minimize these problems, a 
high level computer language is specified for 
implementation of the mediation system. This 
language must be easy to learn and must have 
as built-in features a simple operating system 
and a rudimentary editing procedure. Thus, 
once the user has mastered the language, he 
can utilize the machine effectively with only 
a few auxiliary commands. 



Response Units 

Switch Arrangement . The switch arrange- 
ment used was motivated by research at the 
Augmentation Research Center, Stanford Research 
Institute (Englebart, 1965). This research 
group investigated stenotypewriter, standard 
typewriter, telegraph key, and the computer 
light pen as the input devices for man -machine 
communication. They eventually settled on 
the chord-keyset. This device uses the five 
fingers to generate 31 possible chords. The 
condition when no keys are depressed is reserv- 
ed to indicate the previous chord is done. 
Englebart found that a clerk could learn to 
transmit about 20 words per minute after 20 
hours of unsupervised practice with this key- 
set. A speed of 35 words per minute was 
attained with additional practice. This 
chord-keyset offers a good trade-off between 
speed of input and portability. In the confer- 
ence mediation application, the chord-keyset 
offers a substantial margin of capacity, while 
maintaining portability by permitting partici- 
pants to be unencumbered by fixed keyboards. 
In addition, it gives them the advantage of 
a free hand for taking notes or for other 
purposes. 

A critical specification in an electronic 
vote collecting application is privacy of in- 
puts. The switch characteristics in an iso- 
lated group situation are not critical. If 
one wishes to maintain privacy of a vote in 
a face-to-face situation such as that of the 
classroom, some precautions must be taken. 
One approach is the placement of the switch 
underneath a table to insure it is not visible 
to other members of the group. This switch 
may be activated by either the hand, or, if only 
a single switch is necessary, by the foot. 
Another method is a physical barrier, which 
covers the hand, isolating the movements of 
voting from the visual sphere of group members. 

The keyset configuration selected does 
not require visual attention, and may be kept 
out of sight of the user and others present. 
Concealment would, however, eliminate the 
response unit's multi -function capacity as a 



lc 



WEST COAST COMPUTER FAIRE 



310 



BOX 1579, PALO ALTO CA 94302 



voting device and voice communication instrument, attention was developed. The needed confirma- 



The use of a minimal travel or pressure sensi- 
tive switch dispenses with the need for con- 
cealment. 

Switch Characteristics . Most switches 
lean be obtained in either a momentary or a 
latching version. Latching switches are 
available as toggle or push-button types. 
The toggle type is inapplicable because of 
privacy considerations (Sheridan, 1971). A 
complete cycle with the push-button latching 
switch involves a press-release cycle to turn 
it on and a press-release cycle to turn it off. 
This is considerably slower than a momentary 
switch which is on when pressed and immediately 
off when released. Storage of information is 
done electronically. The momentary switch can 
also function as an automatic key which has 
fixed repeat time and senses a static state to 
determine an output. Examples are automatic 
keyers used to transmit Morse code and repeat 
keys on electric typewriters. 

After a comprehensive survey of current 
switch technology, the electrical grating mechan- 
ical switch (Model TC-1) was selected for use in 
this application. The TC-1 is an economical, 
low force, low travel switch. "The multi -ele- 
ment, parallel contact design concept provides 
an extended conduction region. Its principle 
constitutes the first major advance in the prin- 
ciples of mechanical switching in nearly half a 
century" (Wild Rover Corp.). The switch is heat 
and shock resistant and has a life in excess of 
10 million cycles at low load. In the handsets, 
I use the TC-1, series C switch capsule, .615 
inches in diameter by .16 inch depth, weight 1.4 
grams and the TC-1, M7, a square shaped, plastic 



tion should have similar features for full 
flexibility. The alternatives are tactile 
feedback or auditory feedback with provisions 
for privacy. 

Tactile feedback can be given by either an 
inertial transducer (Sherrick, 1965) or a low 
level electronic stimulus delivered directly 
to a person's skin. The electronic stimulus 
would permit simultaneous sensing of Galvanic 
Skin Response, but the signal would be degraded 
by hand placement and movement artifacts. The 
ratio between absolute threshold and painful 
stimulation is 1 to 8 and permits 59 disting- 
uishable steps or just noticeable differences 
(Saunders & Collins, 1971). 

Conversion of the feedback signals into 
low frequency tones offers the best solution 
for tactile feedback. Most people have had at 
least minimal experience with tone-producing 
instruments. Complexity is considerably re- 
duced by using an inertial transducer. 

Auditory feedback can also be accomplished 
with tone signals, if their frequency is a 
magnitude greater than that required for tactile 
feedback. The major disadvantage of this mode 
of delivery of acknowledgment is the precau- 
tions which must be taken to insure privacy. 
If the device produces an airborn signal, its 
chamber must be sealed to the ear if privacy 
is to be preserved. An inertial transducer 
mounted on the mastoid bone which transmits 
vibration directly to the inner ear by bone 
vibration is commercially available (Radio Ear 
Corp., Cannonsberg, Pa.). This device, how- 
ever, can become uncomfortable after extended 



packaged switch with the numbers through 4 (.75 use, and its placement is probably too critical 



inches by .75 inches, 3 grams). The packaged 
switches were mounted with switch under the 
thumb and switches 1 through 4 under the fingers 
1 through 4. The switch travel for contact is 
approximately 10 thousandths of an inch, and the 
force required is minimal. Thus it is possible 
for the exposed finger to activate the switch 
without apparent movement. This feature permits 
completely private voting in the small group 
setting without the necessity for concealment. 
In operation, the person can rest his finger 
lightly on the switch without triggering a res- 
ponse, and then can trigger an input without 
apparent movement. This type of switch should 
not be confused with the "Contact" or capaci- 
tive relay switch. The capacitive relay switch 
is activated by proximity or touch; therefore, 
a person could not rest a finger on the switch 
without triggering it, a necessary requirement 
for this application. 

Confirmation . In the previous sections, 
a switch configuration permitting anonymous or 
private response without the need for visual 



for use without individualized instruction. 
An earphone type of device was selected for 
this application. When the user hears a tone 
signal in response to his keypress, he can be 
certain that the computer has received and 
acted upon his input. Tone response is a 
software function. 

The current response unit is a full -duplex 
communication terminal, permitting simultaneous 
transmission of keypress information to the 
computer and tone signals from the computer to 
the terminal . 

Handset . The design finally adopted was a 
modified telephone handset. The modification 
consisted of the installation of six switches, 
four placed between the mouthpiece and ear- 
piece of the telephone handset so that the 
fingers of the hand could rest upon them. In 
order to permit the handset to be held in 
either hand, and therefore accommodate left- 
handed people, two thumb switches are mounted 
on opposite sides of the handset, just below 



WEST COAST COMPUTER FA1RE 



311 



BOX 1579, PALO ALTO CA 94302 



the earphone housing. When the handset is held 
in its typical fashion, the user's fingers and 
thumb rest on the appropriate switches. A 
substantial advantage in using the telephone 
handset is its familiarity to almost every 
participant. 

This arrangement meets a number of restric- 
tive criteria necessary for the flexible use of 
an electronic response collection system in the 
group environment. The telephone handset, which 
is readily available, can serve effectively as a 
two-way voice communication instrument, thereby 
permitting experimentation in which the group 
members are separated. In the face-to-face 
situation, the microphone element serves as an 
effective voice pickup unit and permits the am- 
plification of the speaker's voice so it is 
easily heard by other group members. 

Each handset is connected to the computer 
interface via a nine-conductor cable. Five 
conductors return switch depressions, one selec- 
tor line activates that handset's switches, one 
line goes to the earphone, one to the microphone, 
and a common ground line is used by the earphone 
and microphone. 

Voice Input . The telephone handsets used in 
this implementation were of the sound-powered 
type. The sound-powered telephone handset uses 
a dynamic element for its microphone, and thus 
permits a higher quality voice signal than that 
produced by the carbon button transmitter used 
in the conventional telephone. 

An advantage of the telephone handset in 
the classroom type of si tuation i s the mainten- 
ance of an appropriate mouth to microphone ele- 
ment distance. An alternative in the group 
situation is a conventional microphone. The 
conventional microphone public address type of 
system is, however, prone to acoustic feedback 
which can cause severe oscillation, resulting in 
an overload of the various components of the 
system. 

A further problem with the conventional 
microphone system is spill -over, which occurs 
when one person speaks exceptionally loud. 
Under this condition, a number of microphones 
can appear to be on, to the computer, thus caus- 
ing confusion in the determination of the actual 
speaker. This is a problem even in groups of 
three or four people. Attempts have been made 
to design systems which cancel this interference 
by electronic summation and cancellation (Casso- 
tta, Feldstein, & Jaffey, 1964). This cancella- 
tion technique is only effective for a small 
number of speakers and a fixed placement of 
microphones. A substantial increase in complex- 
ity would be required for a large group of 
people in which microphone position was not 
preset or was permitted to change during group 



discussion. A second approach to facilitate 
the identification of the actual speaker is 
the use of the throat microphone (Haley, 1964). 
The throat microphone, however, produces an 
unnatural voice sound of lowered intelligi- 
bility. It can best serve as an adjunct to 
a primary voice transmission channel. 

Computer System 

Selection Factors. The selection of a 
mini -computer was based on three major factors: 
1) computational needs, 2) software availa- 
bility, and 3) cost. Since the primary func- 
tion of the mini -computer is to collect and 
respond to switch depressions by group members, 
the computational load is quite light. The 
voice -ope rated switches transmit data to the 
computer at the highest rate. To continuously 
collect data on vocalization of all group mem- 
bers at one tenth of a second intervals would 
require the computer to sample 320 times per 
second, since two units are selected simul- 
taneously. This is the maximum sampling rate 
for vocal inputs and switch inputs, since both 
of these inputs are sampled by a single oper- 
ation. A rate of 320 samples per second is 
quite low for any modern mini -computer. 

The second major factor in computer se- 
lection was availability of software. The 
computer selected should have a large number 
of installations, preferably in educational 
institutions, and should have an active user 
society, which maintains and updates an ex- 
tensive software library. Software support by 
the manufacturer and a selection of appropriate 

peripheral equipment are al so important fac- 

tors in mini -computer selection. As a result 
of these considerations, the PDP-8/E was 
selected as the main frame for this system. 

The availability of a Digital Equipment 
Corp. PDP-10 on campus also contributed to 
this decision. Programs can be completely pre- 
pared on the PDP-10, which has available a 
PDP-8 simulation program and cross-assembler. 
Thus the advantages of a large time-sharing 
system are available for program preparation, 
but the system is not needed for operational 
use. All programs run in stand-alone mode 
on the mini -computer system. 

Peripherals . A serial input/output board 
was used to drive a video compatible terminal 
(Ann Arbor terminal, Model 204). This terminal 
was selected because of its low price and a 
format appropriate for the display of informa- 
tion to a large group. The unit generates a 
television type display with 16 lines of 32 
characters each. 

The Ann Arbor terminal 204 disp y unit is 
driven at a 1200 baud rate. This permits 120 



WEST COAST COMPUTER FAIRE 



312 



BOX 1579, PALO ALTO CA 94302 



characters per second 
screen. The terminal 
addressing; thus, any 
can be changed in one 
The system 
monitors. 



to be transmitted to the 
permits absolute character 
character on the screen 
fortieth of a second, 
is equipped with eight small video 
For larger groups, standard tele- 



vision receivers tuned to channel four can be 
used, since the terminal simultaneously gener- 
ates a radio frequency signal on this channel 
and a direct video output to the eight nine- 
inch monitors. This display unit is also equip- 
ped with a teletype-like keyboard, which serves 
as the operator's console. 

A secondary storage medium in a mini -com- 
puter installation is often critical for effec- 
tive operation of the system. The storage dev- 
and flexible in order to act 
minimal memory available 
Unless the medium is re- 
limited in use to only a 
space can become rapidly 
diskette makes the 
since it makes poss- 



ice should be fast 
as an extension of the 
on the mini -computer, 
movable, the system is 
few users, for storage 
exhausted, 
system much 



The removable 
easier to use 



ible stand-alone operation and provides an in- 
structor with a medium which, when mounted, pro- 
vides a memory of previous class sessions. Pro- 
gram selection by simply inserting an appropriate 
diskette is also possible. 

In many cases, the cost of peripheral stor- 
age devices exceeds the cost of the computer it- 
self. The only device capable of meeting the 
above specifications at minimum cost was a mov- 
able head diskette or "floppy disk" system. The 
unit selected permits the storage of 131,072 12- 
bit words per disk unit. The maximum transfer 
rate is 15,000 words per second, and transfers 
are made in blocks of 128 words. This configur- 
ation permits the transfer of data to and from 
the main memory of the computer to be time- 
sequenced with data collection operations. In 
the current configuration, the longest possible 
transfer from disk would take approximately 30 
milliseconds. Thus, even when sampling data 
10 times per second, the computer can transfer 
information to disk memory without the loss of 
any data samples. The alternative, a direct 
memory access module, is an expensive peripheral 
controller which permits data transfer to be 
interleaved with computing operations. 

The computer configuration included a tele- 
type interface. The teletype permits the load- 
ing of paper tape when building a software sys- 
tem, running diagnostic programs, and the trans- 
fer of information from other machines. It also 
functions as a hard copy listing device. 

Interface Hardware 



Clock Board . Because of the high rate of 
information transfer to and from the disk, the 
computer cannot perform any other operation 



WEST COAST COMPUTER FAIRE 



while a disk transfer is in progress. In 
order to maintain accurate timing, a special 
cumulating clock was constructed. A founda- 
tion module (11 -DE -8) was purchased from 
Douglas Electronics Inc., San Leandro, Ca. 
The fundamental time source for this clock 
was a crystal oscillator producing a square 
wave output at 10 megahertz. This signal was 
divided by 10,000 to yield a pulse per milli- 
second. Each pulse causes a 12-bit counter 
to increment. Periodically, the counter is 
read by the computer and cleared. Thus, the 
clock can accumulate 2,048 ticks, or milli- 
seconds, before overflowing. The most signif- 
icant bit of the 12-bit counter is reserved 
to indicate overflow. If this bit is set on, 
it cannot be turned off, except by the oper- 
ation which reads the counter into the accumu- 
lator of the central processing unit. This 
positive indication of overflow conforms with 
the standards specified by Creel man (1974). 

The same foundation module serves to 
transmit 12 bits of information to the inter- 
face. These outputs control microphone selec- 
tion and tone selection for feedback. 

Response Unit Interface . The majority of 
the hardware design effort was directed toward 
the interface for the electronic voting units. 
The interface can be divided into five major 
sectors. 

The switch input lines are connected to a 
common node through diodes. Thus, switch #1 
from all of the odd numbered handsets connects 
to the same input terminal on the 12-bit 1/0 
board. At any given moment, one pair of hand 
units is selected. Each unit delivers five 
finger switch closures and one voice-operated 
switch closure to its half of the 12-bit input 
board. The input interface is jumpered to 
indicate a transition on an input line. The 
use of the input lines to indicate transitions 
eliminates the problem of switch bounce by 
storing any on-transition that occurs during 
selection of a unit. 

The 12-bit output section of the parallel 
1/0 interface board is used for switch input 
and for tone feedback. The four least signif- 
icant bits are bused to one-of-16 selector 
integrated circuits. The fifth bit is used 
to enable one of two selector circuits. 

The six most significant bits are similar- 
ly arranged to feed a total of up to eight 
selector circuits. The sixth bit of the 12-bit 
parallel output is reserved for system expan- 
sion. It can be used to select a high or low 
bank of selectors. It would operate simul- 
taneously on the unit voting selectors and on 
the feedback selectors. 



313 



BOX 1579, PALO ALTO CA 94302 



The output register on the clock board 
provides the microphone selection information. 
The seven least significant bits are reserved 
for microphone selection via up to eight one- 
of-16 selectors. Any one of a possible 128 
microphones can be on at a given moment. 

The five most significant bits select any 
combination of five tone generator outputs 
to be transmitted to a given earphone via the 
feedback selectors. Thus, the feedback tones 
can occur in any combination, as is necessary 
with a chord-handset approach. The actual tones 
are derived from the timing chain of the clock. 
Tones derived from the clock chain are accurate 
to five digits, which is well in excess of the 
accuracy needed for this feedback application. 

Voice Signal Processing . The voice-opera- 
ted switches are integrated with the speaker 
selection circuitry. A novel MOS gating method 
is used to minimize system cost and response 
time and to maximize reliability. The micro- 
phone signal from a given hand unit feeds into 
an operational amplifier, which is set for a 
gain of 1,000. This amplified signal is then 
fed into the voice gating circuit and the voice- 
operated switch circuit. 

The voice gating circuit is comprised of a 
three input nand C-MOS gate. The audio signal 
is fed to one input. The other two inputs are 
tied together and are fed from the microphone 
selector lines. The outputs from these micro- 
phone selector gates are summed and amplified 
before being sent out along the earphone bus. 
The earphone bus feeds to the PA amplifier in 
a" 'face- to- face group and into tfie individual 
earphone transducers for use in the isolated 
group condition. The use of a C-MOS gate in 
this application is dependent upon the device's 
capability to function as an analog or digital 
circuit element. When the device is selected, 
it serves as an amplification stage. When it 
is not selected, it is completely cut off, thus 
not permitting the transmission of audio infor- 
mation. 

The voice -ope rated switch circuit contains 
two operational amplifiers. The first ampli- 
fier drives a rectifier. The derived DC poten- 
tial, filtered with a one tenth of a second 
time constant, is in turn amplified and used to 
trigger a one-shot. The one-shot drives a two 
input AND gate. The other input to the gate is 
the unit selector line. The gate output is 
treated as the sixth switch input from a given 
unit. 



The electronic voting units plug into the 
interface via 36 pin Molex sockets. Each 
unit uses one nine-pin column. Thus, a group 
of four units connects simultaneously to the 
interface. The back of the connectors is used 
for mounting the busing diodes. All circuit 
components are mounted on a perforated vector 
board. This board is in turn mounted to a 
standard &- 2 inch relay-rack panel using two 
inch standoffs. In the mounted position, all 
circuitry is between the perforated panel and 
the rack panel. Individual potentiometers are 
supplied to adjust the level of input needed to 
trigger the voice-operated switch. This per- 
mits different types of microphone elements to 
be used in the voting units. Wire wrapping 
was selected as the method of interconnection 
of circuit elements. 

Software 

BASIC Language . The BASIC computer langu- 
age was selected based on criteria of ease of 
use, compatibility with other systems, and 
availability for uses with the current memory 
limitation. The 4K memory made it imperative 
■ that the software system make effective use of 
the diskette secondary storage media. P0LY- 
BASIC (DECUS 8-195), a BASIC dialect, fits 
these requirements. It is almost identical 
to BASIC as described in Kemeny and Kurtz 
(1967). BASIC in this software package is im- 
plemented by compilation, and programs can be 
larger than core memory. In addition, the 
CHAIN command permits one program to call an- 
other. Thus, the sequence of programs limit- 
ed only by size of diskette storage can be ex- 
ecuted under program control . 

Language Additions . POLY-BASIC had to be 
modified to accommodate the diskette secondary 
store. The modification is transparent to the 
user. The POLY-BASIC READ and WRITE commands 
were modified to handle a "DATA" file on disk 
instead of in the temporary storage area from 
which programs are executed. The change per- 
mits as many as 40,000 numbers of characters 
to be reserved for data storage by use of the 
added 0PN function. 

The 12-bit parallel 1/0 interface is con- 
trolled by the new function SRD, which inter- 
rogates a specified handset pair. The function 
is called with the 12 least significant bits 
of the argument specifying which output line 
to select and returns with a 12-bit word con- 
taining a pattern with the ones indicating 
switches closed. 



Connectors and Mounting . Cables provided The hardware clock is interrogated by the 

by the interface manufacturer are used to bring pseudo-interrupt routine which updates a 24-bit 

I parallel 1/0 signals to the interface. DEC memory storage ocation indicating fUPsed 
compatible sockets are used on the interface time to the m 11 second. The CLK function in- 
board itself (Douglas 26-DE8 wire wrap sockets), terrogates this location. The output register 



WEST COAST COMPUTER FAIRE 



314 



BOX 1579, PALO ALTO CA 94302 



I on the clock board which controls the micro- 
phone select and tone select lines is loaded 
with a 12-bit word by the MIC function. 

Undocumented Features. The switch re- 
gister on the front panel can be interroga- 
ted by the KEY function. 

Pseudo-Interrupts . The complexities 
of interrupt handling are avoided in the 
POLY-BASIC software by the use of pseudo- 
interrupt software. After each line of code 
is executed, or block of data is transferred, 
the system polls all peripherals to deter- 
mine whether service is required. This pro- 
cess updates the internal clock time and im- 
plements buffered terminal input and output. 
Thus, a line of up to 32 characters can be 
buffered to the video display while proces- 
sing continues. 

Comparison with Other Systems 

A computer system for group instruction 
and research has been presented by Scholz 
and Holly (1975). This system has a subs- 
tantially different orientation; it also re- 
presents a different hardware approach to 
vote collection than that presented here. 
Their unit uses an input multiplexer, as 
opposed to the selector system described 
here. The input multiplexer has the advan- 
tage that it permits more rapid scanning of 
the input lines in situations where line ca- 
pacitance could cause slow response times. 
This has not been a problem in the system 
described in this paper, however. The input 
multiplexer approach must use a selector 
circuit for each bit of the input signal. 
In our system, six times as many selector 
circuits would have been necessary if the in- 
put selector approach had been taken. In 
the Scholz and Holly system, only three se- 
lector circuits per unit are required; thus, 
the difference is not as significant. The 
useful feature in their system not used in 
the currently described vote collection sys- 
tem is an auto-polling circuit. This permits 
the interface to autonomously scan the voting 
units, while the computer is performing other 
tasks. In this condition, their system gen- 
erates an interrupt when a vote is received. 
In the system described in this paper, the 
use of the interrupt system is reserved. All 
polling proceeds under program control. 

A number of electronic voting systems 
are available commercially. These computer 



controlled voting systems have in most cases 
evolved from previous systems which did not use 
the computer for their control. Therefore, the 
configurations are somewhat redundant, and, in 
many cases, the computer is not utilized effec- 
tively. Most of the electronic voting systems 
in current use are simple tallying mechanisms. 
Even when the systems are controlled by compu- 
ter, the operations they perform are extremely 
simple. 



Acknowledgments 

I would like to acknowledge the inval- 
uable aid of Prof. Albert Ahumada, School of 
Social Science, and Prof. Howard Lenhoff, Bi- 
ological Sciences, on this project. The ass- 
istance of Prof. William Batchelder and Prof. 
Jack Yellot, School of Social Science, Thomas 
Batey, Wayne Deeter, and Mary Aubuchon of the 
Social Science Laboratory, Jim Humphries, Sch- 
ool of Social Science, and Jim Neighbors, In- 
formation-Computer Science, contributed sub- 
stantially to this project. The support of 
Dean Christian Werner and the Staff of the 
School of Social Science was necessary to the 
project's accomplishments. Finally I would like 
to thank Corinne Strohschneider for preparation 
of this report. This work was performed at the 
University of California, Irvine. 

This work was supported in part by Inno- 
vative Projects in University Instruction No. 
406701-07427 and by Alcohol, Drug Abuse, and 
Mental, Health Administration National Research 
Service Award 1 F32 MH051 64-01 from the National 
Institute of Mental Health. 



WEST COAST COMPUTER FAIRE 



315 



BOX 1579, PALO ALTO CA 94302 



References 

Aiken, E. G. Changes in interpersonal des- 
criptions accompanying the operant condit- 
ioning of verbal frequency in groups. 
Journal of Verbal Learning and Verbal Be- 
havior , 1965, 4, 243-247. 

Cassotta, L., Feldstein, S., & Jaffe, J. AVTA: 
A device for automatic vocal transaction 
analysis. Journal of Experimental Analysis 
of Behavior , 1964, 7_, 99-IU4. 

Chu, Y. Study and evaluation of the student 
response system in undergraduate instruc- 
tion at Skidmore College . Educational Su- 
pport Project of the General Electric Com- 
pany, Schenectady, New York, 1972. 

Creel man, C. D. Software management of timing 
in computer-controlled on-line experiments. 
Behavior Research Methods & Instrumenta- 
tion, 1974, 6(5), 488-492. 

Dybvig, H. E. Some observations on the use of 
the student response system in teaching 
radio and television classes. Educators 
Review , Instructional Industries, Inc., 
New York, 1972. . 

Englebart, D. C. Augmenting human intellect: 
Experiments, concepts, and possibilities. 
(Contract AF 49(638) -1024). Menlo Park, 
California: Stanford Research Institute, 
March 1965. 

Flanagan, J. L. Speech analysis, synthesi s 
and perception . Berlin: Springer-Verl ag, 
1965. 

Haley, J. Research on family patterns: An 
instrument measurement. Family Process, 
1964, 3, 41-65. 

Hastorf, A. H. The "reinforcement" of indiv- 
idual actions in a group situation. In 
Krasner and Ullman (Eds.), Research in 
behavior modification . New York: Holt, 
Rinehart, and Winston Inc., 1966. 

Hyman, R. Stimulus information as a deter- 
minant of reaction time. Journal of 
Fv pprimental Psychology , 1953, 4b_, 188-196. 

Instructional Industries Inc. Personalized 
instruction and mass-lecture planning at 
Monroe Community College. Educators Feed- 
back, Ballston Lake, New York. 



Judd, W. A., & Glaser, R. Response latency as 
a function of training method, information 
level, acquisition, and overl earning. 
Journal of Educational Psychology , 1969, 
60(4), 1-30. 

Kemeny, J. G., & Kurtz, T. E. BASIC programm- 
ing . New York: John Wiley and Sons, Inc., 
1967. 

Miller, G. A. The magical number seven plus 
or minus two: Some limits on our capacity 
for processing information. Psychological 
Review, 1956, 63, 81-97. 



Human performan- 
Brooks/Cole Pub- 



Posner, M. I., & Fitts, P. M. 
ce. Belmont, California: 
lishing Company, 1967. 

Rubin, S. Student personalities, classroom in- 
teractions and the evaluation of an anony- 
mous feedback system in college classrooms . 
Thesis, Purdue University, 1970. 

Saunders, F. A., & Collins, C. C. Electrical 
stimulation of the sense of touch. The 
Journal of Biomedical Systems , 1971, 2(7), 
27-37. 

Scholz, K. W., & Holly, B. A 64-station com- 
puter-assisted teaching and research fac- 
ility. Behavior Research Methods & Instru- 
mentation , 1975, 7(3), 3UI-JW. 

Shapiro, D. The reinforcement of disagreement 
in a small group. Behavior Research and 
Therapy , 1963, 1_, 267-272. 

Sheridan, T. B. Technology f or group dialogue 
and social choice . Proceedings of the Fall 
Joint Computer Conference, 1971, 327-335. 

Sheridan, T. B. Progress report of the M.I.T . 
Community Dialog Project , 19/3. 

Thomas, E. J., Walter, C. L., & 0' Flaherty. 
Computer assisted assessment and modifi- 
cation: Possibilities and illustrative 
data . 100th National Conference of Social 
WiTTare, May 30, 1973, Atlantic City, New 
Jersey. 

Wild Rover Corporation. The TC-1 principle. 
TC-1 Touch activated switches, keyboards , 
& moving key systems . Norwood, New Jersey. 



WEST COAST COMPUTER FAIRE 



316 



BOX 1579, PALO ALTO CA 94302 



SYNTHETIC SPEECH FROM ENGLISH TEXT 



D. Lloyd Rice 
Computalker Consultants 

Box 1951 
Santa Monica CA 90406 



A flexible rule processor and a set of rules ?s described 
which converts normally spelled English text Into the p^onettcallv 

£ talker ? c n ?!ucs R d ? d 1l ? s ^ ech 'Vntheslzer system^has ^ 
uomputaiker CT-1/CSR1. String ma tch-and- rep lace type rules locate 

SES JE^rr""" of n r" *•'"»> «"> ^™ *??£*. 

prlate Phonetic sequences. The rules are stored In a wav that allL. 

zzx?*"!?.?? a " andar< ' text ed,t ° r «"> ~ rui r 

expansion of the system to a general phonetic dictionary f>robl«.« 
s rl^ttrrnranT '""«"?<'. »""«-<"9 the ,£L?lZ' hn ^T 
stress patterns and ways of handling ambiguous pronunciations. 



WEST COAST COMPUTER FA.RE 317 BOX 1 579. PALO ALTO CA 94302 



MACHINE RECOGNITION OF SPEECH 
M.H.Hitchcoclc, President, Phonics Incorporated, POB 62275, Sunnyvale CA, 94086 



Introduction 



Computer recognition of spoken 
words and phrases has received a good 
deal of interest in the last few years 
as a sort of "ultimate" form of man- 
machine communication. The available 
technology however has fallen consid- 
erably short of the dreams of auto- 
matic dictation equipment, natural 
language voice programming and a my- 
riad of other applications requiring 
a degree of technical sophistication 
not yet widely available. Is voice 
control of machines realistic today, 
and if so, what kind of applications 
lend themselves to today's technol- 
ogy? How well do they have to work 
and how much should they cost - these 
are the questions to be addressed by 
this paper. 

Is voice control of machines a 
realistic goal given the type of 
speech recognition equipment current- 
ly available? First of all, what 
type of equipment is available. All 
stand alone speech recognition sys- 
tems commercially available today 
share some attributes. All systems 
operate on discrete words or short 
pnrases varying" in maximum length- 
from h to 2 J seconds depending on the 
specific system. None can handle 
continuously or normally spoken text. 
The practical limits of vocabulary 
size are from 16 to several hundred 
words depending on price/performance 
requirements. All systems require 
that the user train or teach the sys- 
tem a set of vocabulary words. This 
training most often consists of let- 
ting the system "hear" several ex- 
amples of each word, forming a proto- 
type pattern of each item. All sys- 
tems operate in real time. Most sys- 
tems are relatively insensitive to 
extraneous noises and have the abil- 
ity to reject words which they have 
not been taught. Output is avail- 
able as either parallel or serial 
data identifying the index of the 
word spoken. From a technical stand- 
point, speech recognition systems 
fall into two main categories. Para- 
metric systems rely on extracting 
specific features of the speech 
signal which relate to linguistic 
units such as phonemes. These fea- 

WEST COAST COMPUTER FA1RE 



tures are then concatenated and word re- 
cognition attempted by analyzing the 
strings of these features. The mam ad- 
vantage of this technique is that a rel- 
atively small number of features may be 
used to identify a large number of spoken 
words since it is essentially a sequential 
process. For example, let us assume that 
using some sort of feature extraction pro- 
cess, the english phonemes, only 46 in 
number, can be correctly identified. Any 
word may then be identified simply by re- 
cording the recognized sequence of phon- 
emes and using a table-lookup to retrieve 
the result. Features which might be used 
to identify phonemes or characterize whole 
words include fundamental voice frequency 
or pitch, frequency and amplitude of vocal 
resonances called formants, noise-like 
segments called fricatives and many other 
well known linguistic units. The biggest 
problem with this technique is that many 
of these voice characteristics, being 
somewhat subjective in nature, may be 
quite difficult and at times impossible to 
identify in the acoustic signal. ^ 

Non-parametric speech recognition sys- 
tems on the other hand look at the speech 
signal as simply a complex pattern in the 
time and/or frequency domain. These sig- 
nals may be reduced, to a manageable num- 
ber of data points by using information 
theoretic techniques to remove redundant 
information. The resulting data sets are 
then associated with spoken words by ap- 
plying any of several well known pattern 
recognition algorithms. These systems 
would work equally well for other acoustic 
or electrical inputs since no specific 
features of speech are looked for. The 
result in either case is a system which 
can identify a limited number of spoken 
words with a reasonably high degree of 
accuracy. Such automatic speech recog- 
nition systems are available for appli- 
cations including industrial control, aids 
for the handicapped, remote data entry/ 
retrieval, simple machine control and game 
playing. Specific devices currently being 
marketed include: VIP500 - Threshold 
Technology Incorporated. A high quality 
system capable of 99% recognition rates 
with a 20-40- word vocabulary. This is a 
parametric system used mostly in indus- 
trial applications such as sorting, data 
input for quality control, or in hands- 
busy machine control situations. Its 
price of $10-30,000 puts it out of the 






318 



BOX 1579, PALO ALTO CA 94302 



range of most home computer users. 

VDETS - Interstate Electronics Cor- 
poration. This is a non-parametric 
based system roughly equivalent to the 
Threshold Technology unit in price and 



perforce. It wS originally designed ££S"S f^T. a optraSonttf E£ 

and markets Tw Son^ m^+»nr,i no tv,««m_ f„ * , ".perd.-Gian, xne unit 



and marketed by Scope Electronics Incor- 
porated. It is unique due to a high 
level voice oriented software package 
that allows the customer to fairly eas- 
ily adapt the system to specific appli- 
cation requirements. 

CGM16 - Centigram Corporation. The 



surement data as quickly as measurements 
are taken. Reports of out of tolerance 
conditions are available immediately and 
thus manufacturing line changes may be 
implemented before long runs of defective 



is pre-programmed with the required mea- 
surement sequence and tolerance limits 
for all products to be inspected. After 
manually entering via TTY heading in- 
formation, including product to be in- 
spected, the inspectors name and any 

WQ6 is a ^^SStoir^jS-SpaS: toSflnce^^thr^spector ffrealylo 
of recognizing a 16 word vocabulary with start an inspection run. The voice svs- 
an accuracy of about 95% for a practiced tern leads him through the wnrJSi *?I 

f^d'use^^l! 3 ^' i*. W P P ^ bably pla ^ recSvermSsu^emeSs OC to S allow" 
find use in simple industrial machine for their correction if necessarv and 

Sff^Sff^ ?*^ 8 ^d perhaps among immediately flagging aiy ou? S to^rance 

events. When the inspection run is com- 
plete, a report is provided on the TTY 
including all necessary heading inform- 
ation and a statistical analysis of all 
measurements taken. The entire opera- 
tion is performed quickly and accurately 
by a single inspector, justifying the 

+ Q rr A-P47A AAA . ° 



the wealthier home computer users. 

SR/8 - Phonics Incorporated. An- 
other non-parametric system with about 
the same performance as the CGM16. A 
useful feature of this system is a user 
controlled threshold which allows the 
recognizer to reject words or sounds it 



has not been trained to respond to. Ad- pricetag of$30,000+^ 



ditionally, it utilizes a dynamic pro- 
gramming algorithm which makes it rel- 
atively insensitive to word duration 
changes which might be experienced over 
long term usage. It ! s price of $995 



SEAMS S^S'ES ^ =«?^ SV£&. 



hobbyist makes it the lowest priced 
stand-alone speech recognizer available 
today. 

What kinds of problems may be sol- 
ved by systems such as these and how 
well do they have to work? Perhaps the 
best insight into this question can be 
gained by looking at specific examples 
of speech input systems currently in 
use. 

One of the products manufactured 
by Owen-Illinois Corporation in Penn- 



The sorting of baggage at the United 
Airlines Terminal at Chicago's O'Hare 
Airport was a two man job. One man phys- 
ically manipulated pieces of luggage, 
reading the destination tag and slidine 



ff^\^*2Ss sas:?- ? l » ?« =s y t 



As part of a quality control process, 
dimensional measurements must be taken 
requiring physical manipulation of both 
the faceplate and measuring instru- 
ments. The resulting measurement data 
was then recorded, keypunched, and 
later analyzed for any measurements 
out of tolerance. This was a labor in- 
tensive operation, prone to error and 
with a built in time delay before in- 
formation could be sent back to the 
manufacturing line to correct out of 
tolerance runs. The system was stream- 
lined by employing a speech recogni- 
tion system, a Threshold Technology 
Inc. Voice Data Entry System. With the 
speech system, which includes a mini- 
computer, an inspector enters the mea- 



sel sorter. As he did this he called the) 
destination to a second man who entered 
it via a numerical keypad, providing in- 
formation to the sorter to allow it to 
offload the luggage at the appropriate 
place for shuttling to the aircraft. 
Using a voice input system, again a 
Threshold Technology Incorporated system, 
the same man who handles the baggage 
speaks the destination, verifies its ac- 
curacy and causes it to be entered into 
the sorter's memory. Additionally, in- 



digit numeric code as was done manually, 
destinations may be entered by airport 
name such as LAX, SFO or IAD. This fur- 
ther reduces the error rate and makes the 
man-machine communications aspect of the 
job more natural. Since this is a multi- 
shift operation and one man is eliminated 
per shift, the high cost of the system is 
acceptable. 

A sophisticated system called "VOTECS 
for Voice Operated Teletypewriter and 
Environmental Control System, produced 
by Scope Electronics Incorporated has 
been used by the Veterans Administration 
Hospital in Richmond VA to allow handi- 
capped persons access to a timeshared 
computer. Using this system, a spastic 
quadriplegic student has demonstrated 



WEST COAST COMPUTER FAIRE 319 



BOX 1579, PALO ALTO CA 94302 



the ability to write, debug and operate 
computer programs communicating entirely 
by spoken commands. While each key oi 
the typewriter may be activated by 
speaking the appropriate character or 
symbol, not all words or commands must 
be spelled out. Certain commonly used 
"BASIC" commands such as DATA, READ, 
PRINT, NEXT and others may be spoken as 
complete words. The resulting through- 
put rates compare favorably with manual 
entry. The individual using this sys- 
tem may also voice control certain func- 
tions in his environment such as lignxs, 
radio, TV or bed position. For persons 
temporarily or permanently disabled, 
voice data entry and control provides 
a degree of freedom not previously 
available. 

How much should speech recogni- 
tions systems cost? In nearly every 
case of systems performing some real 
function in industry, the only accep- 
table criterion has been, does it sig- 
nificantly reduce labor cost? If a 
man may be replaced by a machine, the 
machine's cost, including maintenance 
must be such that it will pay for it- 
self in 1-2 years. In some cases, in- 
creased performance is enough of a fac- 
tor to justify cost but this simply 
means increased output with no increase 
in labor. This has been true because 
prior to last year, speech recognition 
systems typically cost $20-40,000. It 
is hard to justify the use of a system 
like this simply because it is easier 
or more natural to" use. This -situation 
is rapidly changing however as prices 
for complete recognition units continue 
to drop dramatically. Technology ^ that 
was available 8-10 years ago for $20,000 
is now available for less than $1000. 
The question of speech recognition sys- 
tem cost is tied fairly closely to sys- 
tem performance. For applications re- 
quiring large vocabularies and/ or very 
low error rates, system cost can be ex- 
pected to range from $10-50,000. These 
applications include most industrial re- 
quirements such as remote data entry, 
computer aided design and sortation. 
For applications such as equipment con- 
trol, aids to the handicapped, and game 
playing, smaller vocabularies are typi- 
cally used and higher error rates tol- 
erated. However, once the error rate 
exceeds 6-8%, the system becomes <pite 
unworkable, regardless of cost. For- 
tunately, the lower priced recognition 
systems, such as the Phonics SR/8 and 
Centigram CGM16, offer adequate per- 
formance for many simple control tasks 
such as environment control, control of 



simple devices such as timers or locks, 
and noncritical data entry tasks as 
might be encountered by the amateur as- 
tronomer, photographer or radio operato 

What of the future of machine re- 
cognition of speech? Much of the work 
done in universities and corporate re- 
search labs indicate significant improve- 
ments to speech recognition technology. 
"Speech Understanding Systems" allow the 
user to retrieve information from a com- 
puter via his natural language, speaking 
normally rather than having to use one 
of a small number of commands spoken 
very concisely. Vocabulary sizes have 
been pushed to over 1000 items and 
teaching the system initially has been 
simplified and in some cases eliminated 
altogether. Systems have been designed 
which adapt to the users voice changes 
constantly, thus keeping recognition 
performance high for very long periods 
of time. A great deal of work remains 
to be done before systems such as these 
may be brought to bear in real applica- 
tions. Not only are they very expensive, 
requiring large amounts of memory, but 
most do not yet operate in real time. 
It will not be long before the semi-con- 
ductor industry provides the hardware 
necessary to allow practical implemen- 
tation of some of these advanced systems, 
In the meantime, as microprocessor 
speeds increase and memory costs go down 
both the recognition accuracy and vocab- 
ulary size may be increased. Certainly, 
the technology is available today to let 
people verbally control machines when 
their hands or eyes are busy, as a way 
to simplify communication with computers 
or simply because it is fun. 



WEST COAST COMPUTER FAIRE 



320 



BOX 1579, PALO ALTO CA 94302 



SSTV GENERATION BY MICROPROCESSORS 

Clayton W. Abrams K6AEP 
1758 Corns tock Lane, San Jose, CA 95124 



Slow Scan Amateur Television (SSTV) 
is a low resoltuion/bandwidth video com- 
munications method. 

SSTV is a 1000:1 reduction in 
bandwidth from normal TV. This means 
that an SSTV picture will have a band- 
width of 3 KHz, which is compatible 
with low-cost tape recorders and ama- 
teur radio transmitters. 

SSTV was first transmitted over the 
air in 1958 on the old 11 -meter band. 
After numerous experimental contacts, 
the FCC authorized HF transmission of 
SSTV in 1967. Since that time numerous 
amateur radio recievers and TV camera 
converters have appeared on the commer- 
cial market. Now that commercial 
microprocessors are becomming available 
for reasonable prices, there use for 
amateur radio applications is a natural 
evolution. 

Obviously, the use of microproces- 
sors requires a merge of hardware and 
software in a relatively complex manner. 
Today, I would like to talk about three 
6800 computer programs which I have 
written for my SWTPC 6800 computer sys- 
tem for amateur radio SSTV. 

SSTV Character Generator Program 



The easiest method of microproces- 
sor SSTV generation is a character 
generator. Last year at the Computer 
Faire, I spoke about my software ap- 
proach to SSTV character generation. The 
details on this approach were published 
in June 1977 "7 3" Magazine, and in the 
Proceedings of The First Computer Faire. 



SSTV Titler Program 

The second method of character gen- 
eration was described in detail in 
October 1977, "73" magazine. In this 
method I inserted SSTV character lines 
into SSTV pictures. This method was en- 
tirely a software approach and attached 
a SWTPC 6800 to a SSTV Scan Converter. 
The only trick to this approach is to 
slave the microprocessor to scan conver- 
ters horizontal and vertical sync pulses 
For those of you who are not familiar 
with scan converters, they are devices 
which convert a fast scan TV camera 
directly to SSTV by analog and digital 
techniques. See Fig. 1. 

The computer software of the Titler 
program allows for the insertion of up 
to 9 characters on anyone of 10 loca- 
tions of a SSTV picture. A total of 10 
character lines can be stored in com- 
puter memory and inserted in the SSTV 
picture in any order on up to 10 succes- 
sive picture frames. 

Figure 2 is a block diagram of the 
SWTPC 6800 Computer/SSTV Scan Converter 
interface, which consists of only 4 
wires. 

The vertical and horizontal pulses 
provide the proper inputs to the PIA, 
which allows the computer program to 
count SSTV lines and insert the SSTV 
characters at the correct location in 
the picture. The black and white con- 
trol lines are attached to the D/A con- 
verter in the scan converter and allows 
the selection of black on white or white 
on black characters with background. 



Ant 





SSTV 
monitor 



Fig.l Scan converter 



WEST COAST COMPUTER FAIRE 



321 



BOX 1579, PALO ALTO CA 94302 



Terminal 
.TVT 
. K/B 
. Tape 
casette 


RS-232 


SWTPC 
6800 
MP-68 
"8K MEM" 


to 
o 

CD 
*+- 

k. 

a> 
*-» 

c 

< 
a. 


_ sync veri 


Scan converter 
. Robot 400 
.MXV 200 


_ Sync horiz 


Black 


White 





Fig. 2 SSTV titler program computer interface 



An interesting part of both of my 
character generator programs is that 
the character dots are in computer 
memory, which means total flexibility. 
Character sets can be exchanged easily 
or even dynamically with slight pro- 
gram changes to the software. 

SSTV Picture Enhancement Program 



A new and exciting program which I 
developed last summer, also to be dis- 
cussed today, is my SSTV picture 
enhancement program. This program will 
be published in 73 Magazine this spring 
in two parts due to its size and com- 
plexity. However, today I would like 
to discuss its highlites and explain 
the computer techniques used. 

The field of image enhancement is 
not a new one. Numerous commercial TV 
firms have used these techniques which 
I will present today. My main inten- 
tion in this program was to apply these 
techniques in a simple straightforward 
way toward amateur radio SSTV genera- 
tion. 

I'll start by listing some of the 
highlites of my software package: 

1 . Allows the reception^ of an SSTV 
picture over ham format, which can be 
connected directly to a ham transmitter. 

2. Transmits the picture in computer 
memory in a SSTV format, which can be 
connected directly to a ham transmitter. 

3. Prints a hard copy picture of the 
picture in computer memory on a SWTPC 
PR-40 printer. ASCII characters are 
substituted for the picture gray levels 
and printed. 

4. The picture in computer memory can 
be modified or transmitted with the 
following enhancements: 

- remove noise from successive 
pictures received 

- add contrast to the picture 

- zoom in on 5 locations on the 
picture 

- reduce the picture gray level 
content from 16 to two 

- produce negative or inverted 
pictures 

Most of the above enhancements 
were accomplished by computer software 

WEST COAST COMPUTER FAIRE 322 



and a special interface card which cost 
less than $75 to construct. However, 
to accomplish these tricks you must 
first obtain a 6800 computer. 

I would like to first discuss the 
computer interface hardware. The first 
piece of hardware required is a SSTV 
received. Many units are available at 
moderate costs. These units are re- 
quired to demonstrate the SSTV video to 
a varying DC level, and to obtain hori- 
zonatai and vertical sync pulses. I 
installed a pre-amp board in my MXV-100 
monitor to scale the video DC voltage 
swing to 0-5 volts, which was necessary 
for my computer interface card. 

The next piece of hardware required 
is the special interface card (Fig. 3) . 
It consists of an analog-to-digital 
converter (A/D) , digital-to-analog (D/A) 
converter, and a SSTV modulator, the 
cards block diagram is as follows. 

The card uses off-the-shelf Datel 
modules and standard IC's. This inter- 
face card can be easily duplicated. 

The modules are used to input/out- 
put the analog and digital to the out- 
side world. The analog modules are 
controlled by the PIA chip which is 
under program control . 

It is now approrpiate to discuss 
how the TV picture is formatted in com- 
puter memory and how the enhancement 
techniques are achieved. The TV picture 
is divided into small picture elements 
which are called pixels. A horizontal 
scan line was defined to contain 128 of 
these pixels. Since an SSTV picture 
contains 128 lines, the digitized pic- 
ture in computer memory will contain 
approximately 16 K picture elements. 
Each picture element was defined to 
have 16 gray levels or 4 binary bits. 
If the 4 bits or nibbles were packed 
into bytes by the computer software, a 
TV picture could be contained in 8 K of 
computer memory. 

The biggest trick of the entire 
project was to place the SSTV picture 
in computer memory. I took a software 
approach to the problem by sampling the 
A/D converter every 520 microseconds. 
Since the A/D converter had a conver- 
sion rate of less than 50 microseconds, 
I had sufficient time to format the 



BOX 1579, PALO ALTO CA 94302 




Fig. 3 SSTV interface card 



pixels and place them into memory be- 
fore the next pixel time. 

The next project was to convert 
the digital pixels to analog SSTV. The 
pixels were unpacked and shipped to the 
D/A. This caused the SSTV frequency to 
shift between 1500 and 2300 Hz which is 
the SSTV black and white frequencies. 
The PIA was additionally connected to 
the SSTV modulator FSK control line 
which creates sync pulses of 1200 Hz. 
All pulses and timings are controlled 
by software delays. It is now appro- 
priate to discuss some of the enhance- 
ment techniques used. 

Noise Reduction 

This computer programming routine 
averages received pixels with those in 
computer memory. The averaging is 
accomplished by software on a real time 
basis. The resultant effect is to re- 
duce the random noise received by the 
square root of the number of pictures 
received . 

Hard Copy Printing 

This programming routine prints 
hard copies of SSTV pictures on a PR-40. 
Seven ASCII characters are substituted 
for each gray level printed. 

Contrast Enhancement 

This routine of the program adds 
contrast to dark SSTV pictures received. 
The following algorithm was used: 



original 
pixel 



darkest 
pixel 



original 
- darkest 



X2 enhancement 
in contrast 



E El 



The routine first finds the darkest 
pixel in the center of the picture's 
center 10 scan lines. This value is 

WEST COAST COMPUTER FAIRE 



then used to modify all pixels in the 
-computer memory. 

Zoom Enhancement 

This routine zooms in on pictures 
in computer memory with a 2 X magnifi- 
cation. The zoomed picture is then 
transmitted over the air. The process 
is quite simple as follows: 



original byte 



A 4 



SSTV line 1 


A 


A 




4 


4 














SSTV line 2 


A 


A 




4 


4 



Five locations can be selected in the 
picture for zooming by the program. 

Other Enhancements 

The negative pictures were pro- 
duced by complementing each pixel before 
transmission. Additionally, a binary 
effect was achieved by converting the 
picture elements to either black or 
white before transmission. The binary 
clip level was selected by a program 
constant in computer memory. 

The preceeding techniques show how 
powerful microprocessors are and how 
naturally they fit into the SSTV appli- 
cations. 

I would like to encourage other 
radio amateurs to explore the use of 
computers for other ham radio applica- 
tions. My experience has been very 
rewarding and I have never had so much 
fun with the hobby before. 

I'm sure the applications are just 
starting and the future will be very 
exciting. 



323 



BOX 1579, PALO ALTO CA 94302 



££:*• V *#*=++= : +**:**====: : 

##$£='•>£<**#*+*: .- = v**** = ** : ;;;:;;: 
lire'v,**** 1 !.*:: =Q\\\**====: ::::::::: 
###*\0\\**V**- ■ #Q\\******"-=: : 
##g:*"\"- ,*-*'■ ,0'- ,V* -: : 0***Y,Y* =*===■==: . : : : : 
##jrVj0Y\\0Y\Y k *\\*\\**** =: =; ; : == • • : - 
#itfG v .0* :t \G\S :}:: */ : : *\y!yv **~ -=: :::::::: 
##ff\GG'v.0G'\G\*- : : =G\\\****==: ::::::: : : 
#MCCk+*CG\G\V : «*W,====: ::=::::: 
#8S\GQ*SGQC ! 0Y\ == \GV\******"-' :.".::: =: 

###*OjY\\\0'v3G==: : : =#GGG\GY\V.GGGG\\GC\ —=--=: :::::::: : : 
#M\\\SCCG\g5G ::: =: : : 0&^^. i!B ^%SGKJGGCli , v Jt *=^=^ :::::!: 
##* : *GG'' - .CYY\'v-.Y i::: ' : : : ^^^^**&**:fc*:i^^^v\\n -;:;{>! fSi;;..-.-...- 

### fc OOV\\\\\0\V fc : : \G\W\Y A Y\Y\\\Q0\\£Y\Y*" : *** :A **: :::::: 

Ms^OY^Y^Y^G*-*": : : =YG\-GG*-GM3-tGKH nnn:i:;iV!% " :ic * :t — 
&M<£v.\\* :f: Y\* :! ': : : : ^.KOstooa^iiooG^tt^^Kw.**^--! : 

S8tr\YGY\\Y\*Yv'**: : : : ^GGffSGG&ifMifSss-vSH-^SGG'^^.V.**"-; ■ 

»,W.SVV.\~: : : : *GtJiiOMSSGM'*Gfr!r^ **%*^-=§r*\\\**--': 
Mil* \G\ \* \\Vv — — *#ft* lrt2GY\*;fGCMMG* \g\\*****v* ^-.. ■ 
$M*QO\\\\\\ A \--: ■■ *#2CG01J&\YGsGGGGGC3: ^*\,****'. *=:£=; 
8M*-l£T\Y\*\** : *=: : : GO#tK;Y k v/\\Yv.MtO=*; : ==: ===***\ ***■-; 

#fti;A\G* ;V Y !: ** :ii:t '". ; : : : *£■!.: S$H YvOYv'*"\ :, - !::, *=="=- i A*.**'. .:;:t.,: . r; 

ft*j^ , --. , -,-^- , -- 1 -**** = : : : : : *C\G»GGGSG\3GCG :;; Y !: -*=". : =**.*a*-^-~" 



: #»fes^fif;fi(i-; 



= 


=== :fci*:4::-;:A-;-- : • ■ 


■" =Y0£G ;$"'£'' 


: : = 


:4::k:t:i>:4iV ■■. -- ■ ■ • 




=-.= 


tt-= =■=-":=- 


— -- -'■■ '■ ':': ';. :[■'. f 




— t-tv y^\ i' ' ■ ' 


> _ - ::■. \ n^ ";: : r.^r.r 
















o ;•:.'... :»'■..',.■!.!'.. 


•1 .TII-GGHiJlftfjHG''- 


*.*\ 


'.i?'.'.::jc: s' : f .3: 


->'' i ! ».L0I;0G0L)GY 


= t-t 


i 31 f . "I ' .G'. 


* ,J_. „ : 'JL-!Ii* : J ■UL-'i'' 


=-« = 


g>. "v. . .::: .■ 


CIYsMYGnsYGG'- 




= ~\.'ZZCZZZ , 


-" . ]GGGY-,G' .','■> 




== 


= \ V. i \ '. '■. '> "> f;-;', '. ', ', 



M'ii : Y\ 

#ftS*G 
###=G 






: = '-. > *:J: , i i=r .:t* -----:;- 






uftii*Y\-*=: : =: : ==\Y 1 iGYy****=*: =■=•====--!== v ..-.. : .-.j>;a : .s,k. 
S5V Y^-=="—*Y-.\ : -\C\Y* :fct ** -—=-=-==: =s ----.-tttfct**.. _:: 

ttttii" : - : * : : : =■=: : =*GG'-. , -.'\\* ,l . i,: *** ~-===-==*-=== -r-r--rTM::{:- : d*.-fctBS-.4d 
ftSjj*-*. ^.= ; == -■SGG\Y.V : *\Y fi:t * :!:: " ;4i ~ ;!: ==~=--= = ----*X::;::i.&:i:x±l;^; 
%Wv- **: : =: =*V\\Y\\G Y {: Y\ : ' :i!: * :S:i:: * = --==1-==:= ---:::fc\\\:{:\\-**:fc: 

«:j:j:::-:i: --***■._:;::!:;; ■Jfi , .rAS i \V 1 tt4*fc*-:!i4A-~ =: ._. : ._ : 

f**t = ,. =*=-*=«Y-. ::i " : S;iGG'-.GY ,S**'-*:-«i--:-^r*ftr ---Aw:t:A*rfA :£\ ','.','. :to:::*:i"M:>..& 

!tSC-' : '■ :S ■"'~**Y^ : " ;::,:, ^5!f;^G^G , ^Y s ,'^*~=* :S *-" s '"■*■- :<:: ' , =-= =-^-^::-=**r ■=*>;■» = -— .■ 

■S3G'-Y*, :ft ***YG'\*\\iSGG'\G , \V s **** :fc *~ :l *---"~ =":==■=-■--===■=--=- 

irlJi^ : " ;: '-.- ; ' :;i *=-G'\ :;: \GifG»Y'.GY\Y t:l£: " ::! Y !i **' : ' :: *= :: ------- -- =■ =■ -=■ --■ ■ ■ ■ 

sfifii :S "* iA *Y***S0 # "55SCC ! GY\Y\ !ta,otafc * tt *~~-="'=-===='=- - -- 

iti*.i^ : - :J::rA ,Y, : "'\GG\\GGiJ»GGYY*\Y - * :< ^ ::;! ~* :: * : ' : "= =*-■====--- =■ ===-.r-T:r 

SiM^ :::::i:: ' : Y, :k \\GG : "\G\MGGS\Y,Y. : *Y fc ** :i:M::fck± ===:-:r.=-=- I ."==***:S:lt:S:*-.-T=:= 

sSfr"Y\ :f: Y* :5: '\'\GG :fc "GC^sG-Y , .',** :!i: ' !; * :: * :i:3crft:S;!;:!:;4:± :!t r^-r-—-:--*:**:'^ '■ .ir:*i;;r.r;f.-r. 
iJi<l; : " ::: \- ;i:;::fcA Y\G'-,YGYG^SGY%Y\Y- fc ** : * ;k ~- Ari ^ fc "*-.- :fc -- ::;: * 

S»tf- :::::A ---*\\==GG :fci! '\G\\Sf"\S\\Y\Yv fc:ft **-*=~=: :--Jr!r:<.=:fc- = --^' -; ; ; • 

S3G = \Y =A: ^* == -*Y\ , \ !!t=:{A 1 :ft *\G , '.S8 :!:, ** :Str;:r " t * r=:= ====r.T.T 

SSG-'C-G r r '\'\"~~=*\Y : " : - t Y-.--\\\GGYv s - :i: =* c * fc4 ---=== •-••-' • 
S"SG" : \Y" {rA " : **~=-'-*Y\\Y = * = : \*^^ n 8^ : *^*****-=---;====r: 

ttiJSGY', : ' :: ' ! - =**==-■•; \G":--Y £ * , \==***'\G0 :S;& ' ;: -** 3 *:- : *---:::--*:f;i 
SS-5*GC- : " f: = :t \* = : == :ii \~-**; : r^^AJsXGGGY.****^*^^'"'"^^;:. 

ftftfrHKtrfirfftSS^sivSifuifSifs!; lit itQ'\\\\\\\'\\\\\ Y*Y.\\ rf: \Y v .\\\\\\\\\\ :{t 
S$M if ti Siil S I? if s J? it if S >tiHf tM i • ii !; it ttGY i .Y'.\Y\Y\Y i \'-, Y 

ftM#&ifftMRif£i^;r^i;^i;;i;^^ 

•Sa«irt iifi SSUff i M : < M m ES E £ l& b \\\\\\\\\\\ \Y^Y!Y'!\vX^!\\\Y!Y^*§i: i! Ii s S 



"*f«* 



iiCrr: 1 . :!::fci rkAArtrf:--- 



; = :knf;' 



.GG\* 



>*--=r.T**- 






J.;>it Sft'if>;f!"iV;;f;t;ivi} 



iiS&!f'^{fTJ^{Ffffi<rfeSS5 : ?S-t#*5Sf8l 



WEST COAST COMPUTER FAIRE 



324 



BOX 1579, PALO ALTO CA 94302 



A REAL TIME TRACKING SYSTEM FOR AMATEUR 
RADIO SATELLITE COMMUNICATION ANTENNAS 

John L. DuBois,Dytron Inc. 241 Crescent St 
Waltham Massachusetts 02154 



I ntroduct ion: 

This paper describes a 
hardware-software system for pointing an 
amateur antenna at a polar orbiting 
satellite such as OSCAR-7 and 
automatically tracking it during a pass. 

The program is written in 
BASIC and performs all computations 
necessary for tracking once given the 
pass equator crossing time and 
longi tude. 

The system described uses a S-100 
bus microcomputer operating with 
BASIC. Specific hardware is 
described consisting of A/D conversion 



and parallel output 
antenna azimuth and 
the system requires a 
the computer and 
available S-100 buss 
used in the example. 



for interface with 

elevation rotators. 

real time clock in 

a comme re i a 1 1 y 

clock board is 



Background and Objectives: 

There have been a number of good 
articles (1,2,3) written on the subject 
of computing the track of low altitude 
polar orbiting satellites such as 
OSCAR-7 and NOAA-5 for amateur 
radio purposes. There have also been 
several ingenious circuits published 
(4,5) for pointing appropriate antennas 
at the satellite track from 
pre-programmed media such as tape 
cassettes or paper tape. 

The obvious combination, however, 
in view of the current explosion of 
microcomputer applications between doing 
the track computations and managing the 
pointing hardware all by microcomputer 
has not yet, to the authors knowledge, 
appeared in the amateur literature. 
This is such an appealing application 
after one has experienced the need 
six arms in trying to track 
OSCAR pass, tune the receiver, spot 
a desired frequency with 
transmitter, and log the last QSO 
that it was tackled very shortly after 
microcomputer 



for 
an 

the 



getting a 
ope rat ion. 



system 



in 



A review of literature In amateur 
publications quickly turned up a wealth 
of ideas for software. The article by 
Henson In February 1977 73 Magazine 
is an excellent reference and in fact 
forms the basis for most of the orbital 
calculations in this program. 

The material available for 
hardware ,on the other hand, is not very 
helpful unless one intends to exactly 
duplicate a particular pre-programmed 
"tracking" circuit. Since the effort 
and cost involved in building one of 
these devices is a significant fraction 
of that necessary to assemble a small 
microcomputer and the result is 
specialized to only one purpose, it 
seems more desirable to put the labor 
and money into a "micro". 

At this point it was necessary to 
make some choices relating to the 
specific hardware to be involved at the 
antenna end of the system. The data 
transfer necessary between the 
antenna-rotator system and the 
microcomputer is the current position 
and the movement commands. In order to 
simplify the Interface hardware a type 
of azimuth and elevation rotator was 
chosen which controlled the motor by 
independent SPST switches (although 
one side of each switch is common) and 
which indicated position with an 
isolated potentiometer coupled to the 
rotator shaft. These are the Kenpro 
Model KR-400 and KR-500 for azimuth 
and elevation respectively. The 
essential part of the rotator schematic 
is shown in Figure A-l.(See the 
appendix for figures) Other types can 
of course be used with the interface 
board described but in some cases a 
little ingenuity may be necessary to 
obtain the variable DC voltage output 
from the indicator mechanism. 

The signal, then, which is read to 
indicate azimuth (and elevation) is a 
DC voltage derived from the shaft 
coupled potentiometer. Control commands 
to the rotators are issued by simple 



WEST COAST COMPUTER FAIRE 



325 



BOX 1579, PALO ALTO CA 94302 



Icontact closures for cw / ccw / up / and down 
Iconnected in parallel with the rotator's 
manual controls. This provides a 
convenient method for overriding the 
computer position commands. 

A similar set of choices was 
necessary for the software. ( The 
microcomputer was not open for choice, 
it was already in operation and not 
likely to be replaced!). The general 
specification for the program was that 
it require as input only equator 
crossing time and longitude for a 
desired pass and that it perform all 
other necessary calculations internally, 
commanding the rotators to point the 
antenna appropriately. 

This left two loose ends, real 
time and orbital constants. It was 
decided to write separate programs for 
each satellite of interest, differing 
only In the fixed orbital constants. 

Real time was a little stickier. 
It was finally decided to put a 
hardware clock in the computer because 
it would simplify applications in other 
amateur radio programs such as RTTY. 
Although the BASIC program 
presented references this hardware clock 
(Comptek Model CL-2W0) other 
schemes of deriving real time can of 
course be used. 

At this point it was necessary to 
decide on a hardware interface board to 
"read" the rotators and issue direction 
commands. The approach chosen called 
for a combination multiplexed A/D 
i np u t a n rf re 1 ay c oh t a c t pa r a T T e 1 6 u it pu t 
board. Since this exact combination 
does not exist among the many S-100 bus 
accessory boards, it was decided to 
design one to do the job efficiently 
rather than use up two chassis slots 
with separate boards or modify an 
"almost right" board. 

Interface Board; 



The Interface board (6) was designed 
specifically for position readout from 
antenna rotators and for issuing 
direction commands to those rotators. 
Several features, however, give it 
wider application while serving as an 
antenna controller. The schematic 
appears in Figure A- 2. 

A3 1/2 digit BCD A/D 
converter with full scale reading of 
+/- 1.999 volts is provided. Input to 
the converter comes from an 8 position 
multiplexer under program control. 
Input to multiplexer channels thru 7 
appears on pins 1-6 and 19 of the 2k 



output relays 

latched on or 
control . The 
contacts 



pin I/O socket with ground at pin 2U . 
As an aid to troubleshooting, the 
multiplexer output is also brought to 
this socket, pin 23. Up to 8 seDarate 
analog Inputs may be read but two of 
these will normally be antenna position, 
leaving 6 for signal strength, 
transmitter output, etc. 

There are 6 parallel 
which may be individually 
off under program 
isolated SPST-NO relay 

appear on pins 7-18 of the I/O socket. 
Normally, k of these will be used for 
rotator commands: up, down, cw and ccw. 
This leaves 2 free for transml t-receive 
switching, etc. The relay contacts are 
rated at 28 VDC, 250 Ma. maximum and 
external slave relays should be used If 
the rotator switch requirements exceed 
this. 

In addition there are 2 direct 
outputs and 1 direct Input to the 8255 
PPI available. The outputs will 
only drive IMA, however, and must be 
buffered for TTL compatibility. The 
Input Is directly TTL compatible. 
These lines appear on the I/O socket 

(output) and pin 22 



20 and 21 



at pins 
(input ). 

The Interface 
8255 PPI which 
versatile parallel 
1 ines which can 
input or output. 



board uses an Intel 
Is an extremely 
I/O device with 2k 
be programmed to be 
This board expects 



programmed In a 
of 12 1 Ines In .and 



these lines to be 
s P ec _! f_L c _ a r rangemen t 
12 1 ines out. 

The 8255 responds to 
port addresses starting at the 
address set into the Interface 
DIP switch. This switch sets the 
most significant bits of the 
address. The least 2 significant 
respond to address lines A0 and 
Therefore to make the board respond 
hex port addresses 10 through 13, 



sequential 
base 
board 
6 

base 
bits 
Al. 
to 
_- , the 
DIP switch would be set to 000100. 
For response at hex addresses 50 
through 53 the DIP switch would be 
set to 010100, etc. 

The addresses of the board will be 
referred to as A+0, A*l, A*2, and 
A+3 in this discussion where A is the 
offset determined by the 6 MSB's set 
into the Dl P switch. 

The arrangement of I/O lines In 
the 8255 is determined by a control word 
which Is written once Into address A+3. 
For the present board circuits, this 
control word must be 98 Hex ( 152 
decimal). This control word sets up 



WEST COAST COMPUTER FAIRE 



326 



BOX 1579, PALO ALTO CA 94302 



address A+0 and the k MSB's of 
address A+2 as INPUT. It also 
sets up address A+l and the k LSB's 
of address A+2 as OUTPUT. The 
meaning of the bits in these I/O words 
is given in Figure A-3. 

In sending outputs to port 
addresses A+2 and A+l which control 
the MUX address and state of the 
relays it should be remembered that all 
outputs are latching. The desired 
current state must be sent to ALL bit 
positions in the control word for 
EVERY output to the port. 
Potentiometers R9 and RIO allow full 
voltage from the rotator circuits to be 
set to 2.000 volts at the A/D 
converter input. This program assumes 
that degrees elevation is represented 
by volts and 90 degrees by 1.000 
volts. Azimuth of -180 degrees Is 
assumed to be volts and +180 degrees 
to be 2.000 volts. 

Appropriate modifications should 
be made to other rotator indicator 
circuits to obtain these voltages. 

Software: 



The BASIC source listing Is 
given in Figure A-U. and the program 
variables are described in Figure A-5. 
The BASIC used Is TDL 12K 
Super BASIC Version 3.0. 

After initializing orbital 
constants, the program loads an assembly 
language routine at address 6E00H. 
This is the program which reads the 
MC1UU33 A/D converter on the 
interface board. It is programmed in 
assembly instead of BASIC solely 
for speed. Most BASICS would not 
be fast enough to read all BCD output 
digits on the same conversion cycle 
Reading to erratic results. 

A source listing of the A/D 
program is given in Figure A-6. Note 
that an interface board base address of 
20H is used and the A/D converter 
output is read on ports 20H and 22H. 
The program waits for an EOC bit to 
go true, then looks at the BCD 
position indicator bits and reads the 
BCD digit, storing it in the position 
register indicated. The nibble for 
overrange, MSD, and polarity is 
stored in Dl (at address 6E3F in this 
program) while the other 3 significant 
digit nibbles are stored at addresses 
D2, D3, and Dk from most to least 
significant. The BASIC program 
subsequently transfers these nibbles 
Into the array variable DV for 



conversion to a decimal voltage value. 
During this conversion the program 
checks Dl for overrange and sets the 
value output to 2.000 volts if overrange 
has occured. 

The program then gives an 
opportunity to slew the antenna to any 
desired position for testing or whatever 
purpose Is in mind. Next the hardware 
clock may be set by fast running if it 
Is not already on time. The next option 
Is for tracking the pass or else just 
printing the az-el pointing coordinates 
at intervals. The latter is useful for 
manual tracking before the rotator 
hardwre Is built or connected. The 
next option is for pre-AOS and 
post-LOS tracking when the satellite 
is beyond the maximum angle of 
observation. It leaves the elevation at 
(attenuation through the earth would 
be rather high) but tracks the proper 
azimuth for attempting over the horizon 
DX. 

If the tracking mode has been 
selected and the satellite has not yet 
come over the local horizon, the program 
waits until it does. Then at Intervals 
of real time set by variable IM the 
current azimuth and elevation are 
computed and the antenna is moved to 
those coordinates. Care has been taken 
to account for the possibilities of the 
track passing through the rotator stops 
at +/- 180 degrees. If the track 
reaches one of these limits, the program 
stops and slews the antenna so that tne 
desi red azimuth is reached from the 
complementary side of the stop and 
tracking continues from that point. 

After each antenna update the 
current time, coordinates, range to the 
satellite and doppler shift are printed 
on the console. The doppler shift 
computation assumes the uplink and 
downlink frequencies of Oscar 7, mode 
B and is not accurate for ranges beyond 
the maximum observation angle. 

Note that alignment errors in the 
antenna mounting can be easily corrected 
in the program (assuming that you can 
figure out the error). One such 
correction appears in the elevation 
routine of this program. 

Two features of the BASIC 
used which may not correspond to other 
extended BASICS are the formatting 
strings for the PRINT USING 
statement and the proceedure for calling 
the assembly language routine. Users 
should check these areas especially when 
translating to other dialects of 
BASIC. 



WEST COAST COMPUTER FA1RE 



327 



BOX 1579, PALO ALTO CA 94302 



In order to apply this program to 
other satellites, the user must insert 
the appropriate values for P, HO, T9, 
and AO in the initializing statements 
at the beginning. The station lattitude 
KO and longitude Kl must be set to the 
proper values in any use of the program. 
A typical console printout during 
tracking Is shown in Figure A-7. 

Cone 1 us ions: 



The results of this effort have 
been generally rewarding. During a 
typical pass the system operates very 
well to alleviate attention to the 
antenna. The console display is a great 
aid in timing QSOS and looking for 
particular stations. In use with the 
NOAA satellites the system permits 
almost completely automatic picture 
acqui sit ion. 

Two negative features have turned 
up however, one of minor importance and 
the other a GREAT HAIRY 
MONSTER ! The simpler problem is 
that for some orientations of the 
antenna array the angular dynamics of 
the antenna-mast load interact with the 
control algorithm to produce a 
persistent oscillation of a few degrees 
beyond the dead band. This would be 
easily eliminated by a proportional 
control algorithm instead of "bang-bang" 
but the effect is so infrequent that it 
has been Ignored. 

The other situation is that awful 
spectre RFI! DX operation on 
OS-GAR ■- at lt>w e levat ions i s a wealc 
signal afalr and the last thing one 
wants Is spurious signals. RFI 
generation by typical hobby 
microcomputers is intense within a 
hundred feet or so over the entire 
amateur spectrum. The author's system 
was no exception. A great deal of 
effort was ,put into shielding and 
"bead-choking 1 ; almost all lines exiting 
the computer 1 case with 
sucess. On the OSCAR-7 
downlink at 145.925 to 
numerous birdies are still 
they are modulated by 



part ial 



only 
mode B 
145.975 MHZ 
present and 
the various 



73 



References; 

1. B. Henson, WBOJHS, 
Magazine, Feb. 1977, pg.72 

2. A. Burke, W6UIX, 73 Magazine, 
Nov. 1977, pg. 58 

3. T. Prewitt, W9IJ, 73 Magazine, 
Nov. 1977, pg. 61* 

4. D. Brown, W9GCI, 73 Magazine, 
July 1977, pg. 46 

5. G.Bailey, WA3HLT, Ham 
Radio, Jan. 1975, pg.26 

6. The interface board described 
available in PC board or 

assembled and tested form from the 
author at: Dytron Inc. 

241 Crescent St. Waltham Ma. 
02154. 



operations of the program, often 
obscuring desired stations. Additional 
shielding and RFI tracing is 
obviously needed. 

This problem seems to be a serious 
inhibition to more widespread and 
sucessful application of microcomputers 
to amateur radio. It is hoped that 
this situation can be tackled by some of 
the numerous clever individuals in our 
hobby and some effective remedies found. 



WEST COAST COMPUTER FA1RE 328 



BOX 1579, PALO ALTO CA 94302 




To CCW Relay 

Contacts 

SPST-NO 

1 



To CW Relay 

Contacts 

SPST-NO 

Interface Connections 



Gnd. + 

To MUX Input 

Potentiometer 



FIGURE A-l 
Partial Rotator Schematic Showing Interface Wiring 



WEST COAST COMPUTER FAIRE 



329 



BOX 1579, PALO ALTO CA 94302 




WEST COAST COMPUTER FAIRE 



330 



BOX 1579, PALO ALTO CA 94302 



INPUT PORTS 



ADDRESS A+0 
7 






















DS1— DSU Q3 — QO 

MSD— LSD| A 

a l—BCD Data 
I — Digit Strobes 



ADDRESS A+2 



WV8& 



A A 



L Direct lnput(22) 

— Overrange 

— EOC 



OUTPUT PORTS 

ADDRESS A+l 
7 



21 



20 



9 Ik 11 
16 17 7 

L—Output Relays 
Output 



ADDRESS A+2 
7 



^^ 



t t-Out, 
I Di rect 

(Numbers are I/O socket pins) 



MSB-LSB 

MUX Address 



t 



FIGURE A-3 
Bit functions of I/O ports on interface card. 



WEST COAST COMPUTER FAIRE 



331 



BOX 1579, PALO ALTO CA 94302 



The following 7 pages are the BASIC listing 
of the system operating program. They are 
referred to in the text as Figure A-**. 



WEST COAST COMPUTER FAIRE 332 BOX 1579, PALO ALTO CA 94302 



10 REM BASIC ANTENNA TRACKING PROGRAM FOR POLAR ORBITING SATELLITES 

20 REM 

30 DIM DV(5) / T(10) 

40 REM 

50 REM FORMATTING FOR PRINT USING STATEMENT 

60 REM 

70 !TIME=##:##:## RANGE=#### MILES DOPPLER=## . ## KHZ 

80 REM 

90 REM STATION, ORBIT, AND MISCELLANEOUS CONSTANTS 

100 REM 

110 K0=42.5:Kl=71.5:P2=6.283185:P9=P2/360.0: IL=60: IM=1:RE=3961 

120 D1=&6E3F:PR=2:P=114. 9448 :H0=101. 70 :T9=28. 73625 : A0=910. 0: RL=5000 

130 REM 

140 REM LOAD ASSEMBLY LANGUAGE A/D CONVERTER PROGRAM 

150 REM 

160 GOSUB 3470 

170 REM 

180 REM INITIALIZE 8255 PPI AND THE ROTATOR SWITCHES 

190 REM 

200 OUT 35,152 

210 OUT 33,0 

220 REM BEGIN PROGRAM ROUTINES 

230 REM 

240 INPUT "WANT TO SLEW ANT.";A$ 

250 IF A$="Y" THEN 3380 

260 REM 

270 REM CALCULATE MAXIMUM ANGLE OF OBSERVATION 

280 X2=3957/(A0+3957) 

290 GOSUB 2670 :REM CONVERT TO DEGREES 

300 M0=X7 

310 REM 

320 INPUT"WANT TO SET CLOCK?"; A$ 

330 IF A$="N" THEN 360 

340 GOSUB 1320 

350 REM 

360 INPUT"PRINT RESULTS(P) OR TRACK(T)";A$ 

370 IF A$="P" THEN Jl=l ELSE Jl=2 

38 REM 

390 REM 

400 INPUT "EQX TIME";H,M,S 

410 INPUT"EQX LONG.";L0 

420 INPUT"WANT TO TRACK PRE-AOS/POST-LOS"; A$ 

430 IF A$="Y" THEN J2=l ELSE J2=2 

440 REM 

450 REM CONVERT EQX TIME TO OFFSET DECIMAL 

460 REM 

470 GOSUB 1730 : TX=TM ? 

480 IF Jl=l THEN 530 :REM GO DIRECTLY TO COMPUTING IF NOT TRACKING 

490 REM 

500 REM WAIT FOR EQUATOR CROSSING 

510 REM 

520 GOSUB 1720 : IF TM<TX THEN 520 

530 REM: 

540 REM: MAIN PROGRAM LOOP 



WEST COAST COMPUTER FA1 RE 333 BOX 1579, PALO ALTO CA 94302 



550 REM 

560 PRINT 

570 FOR 19=1 TO IL STEP IM 

580 GOSUB 21*90 :REM COMPUTE LAT. AND LONG. OF SUB-POINT 

590 IF Jl = l THEN 61*0 :REM SKIP WAITING FOR HORIZON IF NOT TRACKING 

600 REM 

610 REM WAIT FOR LOCAL HORIZON CROSSING 

620 REM 

630 GOSUB 1720 : IF TM<(TX+l9/60-IM/120) THEN 630 

6k0 GOSUB 3100 : IF D=0 THEN IF I9< I L THEN 1010 ELSE 1030 ELSE 680 

650 REM 

660 REM COMPUTE REQUIRED AZIMUTH AND ELEVATION FOR ANTENNA 

670 REM 

680 GOSUB 2830 : AZ=C 

690 GOSUB 3310 : EL=E 

700 REM 

710 REM PRINT THE CURRENT AZ/EL AND POSITION THE ANTENNA 

720 REM UNLESS WE ARE IN THE PRINT ONLY MODE (Jl=l) 

730 REM 

7U0 ! ELEVATION = ##.# 

750 ! AZIMUTH - ###.# 

760 PRINT USING 750;AZ 

770 REM 

780 REM SKIP ANTENNA AZIMUTH IF NOT TRACKING 

790 REM 

800 IF Jl=l THEN 850 

810 GOSUB 1780 

820 REM 

830 REM SKIP ANTENNA ELEVATION IF NOT TRACKING 

8»*0 REM 

850 PRINT USING 7»*0;EL 

860 IF Jl=l THEN 910 

870 GOSUB 2170 

880 REM 

89^ RER COMPUTE RANGE AND DOPPLER 

900 REM 

910 GOSUB 2930 

920 REM 

930 REM IF NOT TRACKING, THEN ARTIFICALLY INCREMENT CLOCK 

91*0 REM 

950 IF Jl=l THEN TM=TX+ 19/60 

960 H»INT(TM-2l*):M»((TM-2t*)-H)*60:S=(M-INT(M))*60:IFH> = 2i*THENH=H-2«* 

970 REM 

980 REM PRINT TIME, RANGE, AND DOPPLER AND GO AROUND LOOP AGAIN 

990 REM 

1000 PRINT USING 70;H, I NT(M) , I NT(S) , I NT( R), FD 

1010 PRINT : NEXT 

1020 REM END OF THE PROGRAM, REQUEST NEXT ACTION. 

1030 PRINT"LOS" : GOTO 360 

101*0 REM: 

1050 REM *********** SUBROUTINES FOLLOW ************* 

1060 REM: 

1070 REM: THIS SUBROUTINE CALLS AN ASSEMBLY LANGUAGE ROUTINE 

1080 REM: TO READ THE A TO D CONVERTER. THE MUX ADDRESS AND 

1090 REM: PPI MUST BE SET UP BEFORE ENTRY. THE. VALUE RETURNS 



WEST COAST COMPUTER FAIRE 



334 



BOX 1579, PALO ALTO CA 94302 



1100 REM: IN D1,D2,D3,AND D4 AS BCD. 

1110 REM 

1120 CALL &6E00 

1130 FOR 1=0 TO 4 : DV( I )=PEEK(D1+ I )AND15 : NEXT I 

1140 IF (DV(0) AND 15)=(7 OR 3) THEN 1190 

1150 DV(5)=- ((SGN(DV(0)AND8))-1) 

1160 DV(4)=DV(5)+DV(1)/10+DV(2)/100+DV(3)/1000 

1170 IF( DV(0) AND 4) THEN RETURN 

1180 DV(4)=-DV(4) : RETURN 

1190 IF( DV(0) AND 8) THEN DV(4)=0 : GOTO 1170 

1200 DV(4)=2.0 : GOTO 1170 

1210 RETURN 

1220 REM: 

1230 REM: SUBROUTINE TO FETCH THE CURRENT TIME. 

12»*0 REM: TIME RETURNS IN VARIABLES H,M,S 

1250 REM 

1260 FOR 1=0 TO 7 : LET T( I )= I NP(168+ I ) : NEXT I 

1270 H=10*T(7)+T(6) 

1280 M=10*T(5)+T(1) 

1290 S=10*T(2)+T(3) 

1300 RETURN 

1310 REM: 

1320 REM: SUBROUTINE TO SET THE CLOCK 

1330 REM 

1340 PRINT"FLIP SS15 DOWN" 

1350 PRINT"ENTER TIME + AT LEAST 2 MINUTES" 

1360 PRINT"AS 4 DIGITS SEPARATED BY COMMAS." 

1370 PRINT"FLIP SS15 UP AT EXACT TIME." 

1380 OUT 169,0 

1390 INPUT H9,H,M9,M 

11*00 OUT 169,1* 

1U10 IF INP(175)=H9 THEN IF INP(174)=H THEN OUT 169, 0:GOTO1430 

1420 GOTO 1410 

1U30 OUT 169,2 

11*1*0 IF INP(173)=M9 THEN IF INP(169)=M THEN OUT 169,1 :GOTO1460 

11*50 GOTO 11*1*0 

11*60 WAIT 255,128 

1U70 OUT 169,0 

11*80 GOSUB 1230 

U90 PRINT"TIME -- " H ":" M ":" S 

1500 RETURN 

1510 REM: 

1520 REM: SUBROUTINE TO FETCH CURRENT AZIMUTH 

1530 REM: VALUE RETURNS IN AT 

154 REM 

1550 OUT 34,1 : WAIT 34,128 : GOSUB 1120 

1560 IF DV(4)>=0 AND DV(4)<=1 THEN AT=180+DV(4 )*180 : GOTO 1590 

1570 IF DV(4)>1 AND DV(4)<=2 THEN AT=(DV(4)-1)*180 : GOTO 1590 

1580 PRINT CHR$(7);CHR$(7);"AZIMUTH LIMIT ERROR": GOTO 1590 

1590 RETURN 

1600 REM: 

1610 REM: SUBROUTINE TO FETCH CURRENT ELEVATION 

1620 REM: VALUE RETURNS IN VARIABLE ET 

1630 REM 

1640 OUT 34, 2 : WAIT 34,128 : GOSUB 1120 



WEST COAST COMPUTER FAIRE 



335 



BOX 1579, PALO ALTO CA 94302 



1650 IF DV(4)>=0 AND DV(4X = 2 THEN ET=DV(4)*90 : GOTO 1670 

1660 PRINT CHR$(7);CHR$(7);"ELEVATION LIMIT ERROR": GOTO 1670 

1670 RETURN 

1680 REM: 

1690 REM: SUBROUTINE TO FETCH TIME IN DECIMAL WITH 24HR OFFSET 

1700 REM: TIME RETURNS IN TM IN HOURS + 24 

1710 REM: 

1720 GOSUB 1260 

1730 TM=H+M/60+S/3600+24:RETURN 

171*0 REM: 

1750 REM: 

1760 REM: SUBROUTINE TO MOVE TO A REQUESTED VALUE OF AZIMUTH ,AZ 

1770 REM: 

1780 GOSUB 1550 

1790 DF=AZ-AT 

1800 IF ABS(DFXPR THEN OUT 33,0 : RETURN 

1810 IF ABS(DF)<3*PR THEN OUT 33,0 

1820 IF DF<0 THEN 1980 

1830 IF ABS(DF)<180 THEN 1920 

1840 REM: 

1850 REM: (AZ-AT)>0 AND ABS(AZ-AT)>180 

1860 REM: 

1870 OUT 33,1 

1880 GOTO 1780 

1890 REM: 

1900 REM: (AZ-AT)>0 AND ABS(AZ-AT)<180 

1910 REM: 

1920 IF(AZ >180)AND(AT<=180) THEN J=-l : GOTO 2100 

1930 OUT 33,2 

1940 GOTO 1780 

1950 REM: 

1960 REM: (AZ-ATXO AND ABS( AZ-AT)>180 

1970 REM: 

1980 IF ABSCDFX180 THEN 2040 

1990 OUT 33,2 

2000 GOTO 1780 

2010 REM: 

2020 REM: (AZ-ATXO AND ABS( AZ-ATX180 

2030 REM: 

2040 IF (AT>=180) AND (AZ<180) THEN J=l : GOTO 2100 

2050 OUT 33,1 

2060 GOTO 1780 

2070 REM: 

2080 REM: SLEW 180 DEGREES 

2090 REM: 

2100 A1=AZ 

2110 AZ=AT+J*180 

2120 IF AZ<0 THEN AZ=AZ+360 

2130 IF AZ>360 THEN AZ=AZ-360 

2140 GOSUB 1760 

2150 AZ=A1 

2160 GOTO 1780 

2170 REM: 

2180 REM: SUBROUTINE TO MOVE TO A REQUESTED VALUE OF ELEVATION, EL 

2190 REM: 



WEST COAST COMPUTER FAIRE 



336 



BOX 1579, PALO ALTO CA 94302 



2200 

2210 

2220 

2230 

2240 

2250 

2260 

2270 

2280 

2290 

2300 

2310 

2320 

2330 

2340 

2350 

2360 

2370 

2380 

2390 

2400 

2410 

2420 

2430 

2440 

2450 

2460 

2470 

2480 

2490 

2500 

2510 

2520 

2530 

2540 

2550 

2560 

2570 

2580 

2590 

2600 

2610 

2620 

2630 

2640 

2650 

2660 

2670 

2680 

2690 

2700 

2710 

2720 

2730 

2740 



IF EL<0 OR EL>90 THEN EL=0 

REM: NEXT STATEMENT IS PURELY FUDGE, CORRECTS ALIGNMENT ERROR 

EL=EL+5 

REM: 

GOSUB 1640 

DF=EL-ET 

IF ABS(DF)<PR THEN OUT 33,0: RETURN 

IF DF<0 THEN 2300 

OUT 33,8 

GOTO 2240 

OUT 33,4 

GOTO 2240 

REM: 

REM: SUBROUTINE TO CALCULATE ARCSIN 

REM: ENTER ARGUMENT IN XI, VALUE RETURNS IN X8 

REM: 

IF X1>=1 THEN 2450 

IF Xl<=-1 THEN 2460 

H9=90.0 

Hl=-90.0 

X8=(Hl+H9)/2 

IF ABS(SIN(X8*P9)-X1)<0.0001 THEN RETURN 

IF SIN(X8*P9)>X1 THEN 2440 

H1=X8 : GOTO 2400 

GOTO 2400 
RETURN 

: RETURN 



SUBROUTINE TO CALCULATE LAT. AND LONG. OF SUB POINT 

REQUIRES TIME 19 AND EQX LONG LO 
VALUES RETURN IN SO AND SI IN DEGREES 



H9 = X8 

X8=90. 

X8=-90 

REM 

REM 

REM 

REM 

REM 

REM 

X1=.9790*SIN(5.4662E-2*I9) 

GOSUB 2360 

S0=X8 

X2=COS(5.4662E-2*l9)/COS(P9*S0) 

GOSUB 2670 

S1=X7 

Sl=Sl+l9/4+L0 

IF SK360 THEN RETURN 

Sl=Sl-360 : RETURN 

REM 

REM 

REM 

REM 

REM 

IF X2>=1.0 THEN 2760 

IF X2<=-1.0 THEN 2770 

H9=0.0 

Hl=180.0 

X7=(Hl+H9)/2 

IF ABS(COS(X7*P9)-X2)<0.0001 THEN RETURN 

IF COS(X7*P9)>X2 THEN 2750 

H1=X7 : GOTO 2710 



SUBROUTINE TO CALCULATE ARCCOS 
ENTER ARGUMENT IN X2, VALUE RETURNS IN X7 



WEST COAST COMPUTER FAIRE 



337 



BOX 1579, PALO ALTO CA 94302 



2750 H9=X7 : GOTO 2710 

2760 X7=0. : RETURN 

2770 X7=180. : RETURN 

2780 REM: 

2790 REM: SUBROUTINE TO FIND AZIMUTH TO SUB POINT 

2800 REM: REQUIRES PARAMETERS SO, P9,K0,D, L5 

2810 REM: VALUE RETURNS IN C 

2820 REM: 

2830 X2=SIN(S0*P9)-SIN(K0*P9)*COS(D*P9) 

28«*0 X2=X2/(COS(K0*P9)*SIN(D*P9)) 

2850 GOSUB 2670 

2860 C=X7 

2870 IF L5>=0 THEN RETURN 

2880 O360-X7 : RETURN 

2890 REM: 

2900 REM: SUBROUTINE TO CALCULATE RANGE AND DOPPLER 

2910 REM: REQUIRES PARAMETERS: A0,D, P9,E,S0,RE,H0 

2920 REM: 

293 R=((A0+3957)*COS(D*P9)-395 7)/COS((90.-E)*P9) 

2940 R=ABS(R) 

2950 X2 = (R"*2 + (RE+A0)^2-RE^2)/(2*R*(RE+A0)) 

2960 GOSUB 2670 

2970 VP=4.43*SIN(X7*P9) 

2980 VR=((VP*SIN(H0*P9))"2)*(VP*COS(H0*P9)-.28 5*COS(S0*P9))""2 

2990 FD=3.108*SQR(VR) 

5000 IF R>RL THEN FD*-FD 

3010 RL=R 

3020 RETURN 

3030 REM 

3040 REM 

3050 REM 

3060 REM 

3070 REM 

3080 REM 

3090 REM 

3100 IF Sl<=180 THEN 3120 

3110 Sl=Sl-360 

3120 L5=K1-S1 

3130 IF ABS(L5)<=180 THEN 3170 

3140 IF(K1-S1)<0 THEN 3160 

3150 L5=L5-360 : GOTO 3170 

3160 L5=L5+360 

3170 X2=SIN(K0*P9)*SIN(S0*P9) 

3180 X2=X2+COS(K0*P9)*COS(S0*P9)*COS(L5*P9) 

3190 GOSUB 2670 

3200 D=X7 

3210 IF J2=l THEN 3240 

3220 IF D<= MO THEN RETURN 

3230 D=0 : REM: OUT OF RANGE 

3240 RETURN 

3250 REM: 

3260 REM 

3270 REM: SUBROUTINE TO CALCULATE ELEVATION 

3280 REM: REQUIRES PARAMETERS :A0,D,P9 

3290 REM: VALUE RETURNS JN E 



SUBROUTINE TO FIND G.C. DEGREES BETWEEN STATION AND 
SATELLITE SUB POINT. REQUIRES PARAMETERS KO, P9, SO, SI, Kl 
VALUE RETURNS IN D 



WEST COAST COMPUTER FAIRE 338 . BOX 1579, PALO ALTO CA 94302 



3300 REM: 

3310 E=(A0+3957)*SIN(D*P9) 

3320 E=E/CCA0+5957)*COS(D*P9)-3957) 

3330 E=ATN(E) 

3340 E=90.-360*E/P2 

3350 IF E>160 THEN E=E-180 

3360 RETURN 

3370 REM: 

3380 REM: 

3390 REM: UTILITY SLEW ROUTINE 

31*00 REM: 

3410 INPUT "AZ= I, ;AZ 

3420 INPUT M EL=";EL 

3430 GOSUB 1780 

3440 GOSUB 2240 

3450 GOTO 240 

3460 REM: 

3470 REM: 

3490 REM- TH ' S SUBR0UT,NE L0ADS THE A/D ROUTINE AT 6E00 H 

3500 FOR J=0 TO 62 

3510 READ Z 

3520 POKE ( &6E00+J ) ,Z : NEXT 

3530 RETURN 

3540 REM: 

llln SJI??5S'?22'* E6 ' M0 '* CA '* 00 '*6E**DB,a20,aE6,a80,&CA 
If52 " A I A&07 ' &6E ^ DB ' & 20 / &47 / &DB / &20 / SE6 / &40;&CA'&ll &6E 
3570 DATA&DB / &.0,&4F / &DB / & fc / &E6'&20'&CA MB &6E ADR *5n m 
3580 DATA&DB,*20,&E6,&10 &CA S25 SelsD^Lo^S^'^'ae?' 

3590DATA & 7A /& 32, & 41 /& 6E /& 79 /& 32;mo; & 6E;&78;&32;&3F;&6E /& F9 /& C9 



WEST COAST COMPUTER FAIRE 



339 



BOX 1579, PALO ALTO CA 94302 



AO 

AT 

AZ 

C 

D 

DF 

DV 

Dl 

D2 

D3 

Dk 

E 

EL 

ET 

FD 

H 

HO 

H9 

!L 

IM 

19 

Jl 

J2 

KO 

Kl 

LO 

L5 

M 

MO 

M9 

PR 

PO 

P2 

P9 

R 

RE 

RL 

S 

SO 

SI 

T 

T9: 
TM: 
TX: 
VP: 
VR: 
XI: 
X2: 
X7: 
X8: 



Orbit altitude in miles. 

Observed current azimuth in degrees. 

Requested azimuth in degrees. 

Azimuth of satellite sub-point in degrees. 

Angular separation of station and sub-point in degrees. 

Current error from setpoint in azimuth or elevation. 

Array containing Dl-U nibbles from A/D converter. 

Most significant BCD nibble of A/D conversion. 

Second most significant A/D nibble. 

Third most significant A/D nibble. 

Least significant A/D nibble. 

Elevation of satellite in degrees. 

Requested elevation of antenna in degrees. 

Observed current elevation of antenna in degrees. 

Doppler shift in HZ. 

Time in hours. 

Inclination of orbit in degrees. 

Miscelaneous temporary variable. 

Limit for variable 19. 

Increment of 19 in minutes. 

Main program loop index in minutes. 

Print or track flag. l=Print. 2=Track. 

Pre-AOS/ Post- LOS track flag. l=Yes. 2=No. 

N. lattitude of station in degrees. 

W. longitude of station in degrees. 

Equator crossing longitude in degrees. 

Difference in longitude between station 

Time in minutes. 

Maximum observation angle at station in 

Miscelaneous temporary variable. 

Desired dead band around az/el set point. 

Period of orbit In minutes. 

2*PI. 

Radians/ degree 

Range to satellite in miles. 

Radius of earth in miles. 

Minimum range to satellite in miles. 

Time in seconds. 

Lattitude of sub-point in degrees 

Longitude of sub-point In degrees. 

Array variable containing BCD elements of time from 

hardware clock. 

Degrees of westerly progression of orbit per orbit. 

Current time in decimal hours+2U. 

Equator crossing time in decimal hours+24. 

Miscellaneous temporary variable. 

Miscellaneous temporary variable. 

Argument to arcsln routine. 

Argument to arccos routine. 

Value returned by arccos routine. 

Value returned by arcsin routine. 



and satellite sub-point 
degrees. 



Figure A-5. Definition of Program Variables 



WEST COAST COMPUTER FAIRE 



340 



BOX 1579, PALO ALTO CA 94302 



TPL Z30 CP/M DISK ASSEMBLER VERSION 2.21 
.MAIN. - 



PAGE 1 



6E00 



.PABS 

THIS ROUTINE READS MC1UU33P A/D CONVERTER AND STORES 
BCD DIGITS FOR READING BY CALLING PROGRAM. PRIOR TO 
USE 3255 PPI MUST BE SET TO CONTROL WORD 93M AND THE 
MUX ADDRESS MUST BE OUTPUT TO SELECT DESIRED CHANNEL. 

.LOC 6E00H 



6E00 


DB22 


6E02 


EG30 


6E04 


CA 6E00 


6E07 


DB20 


6E09 


E680 


6E0B 


CA 6E07 


6E0E 


DB20 


6E10 


k7 


6E11 


DB20 


6E13 


ESkO 


6E15 


CA 6E11 


6E18 


DB20 


6E1A 


kF 


6E1B 


DB20 


6E1D 


E620 


6E1F 


CA 6E1B 


6E22 


DB20 


6E2li 


57 


6E25 


DB20 


6E27 


E610 


6E29 


CA 6E25 


6E2C 


DB20 


6E2E 


32 6E42 


6E31 


7A 


6E32 


32 6EU 


6E35 


79 


6E36 


32 6EU0 


6E39 


78 


6E3A 


32 6E3F 


6E3D 


F9 


6E3E 


C9 


6E3F 




6EU0 




6EU1 




6E42 





EOC 
DS1 

DS2: 

DS3: 

DSi*: 



IN 

AN I 

JZ 

IN 

AN I 

JZ 

IN 

MOV 

IN 

AN I 

JZ 

IN 

MOV 

IN 

AN I 

JZ 

IN 

MOV 

IN 

AN I 

JZ 

IN 

STA 

MOV 

STA 

MOV 

STA 

MOV 

STA 

SPHL 
RET 



Dl = . 
D2=.+l 
D3=.+2 
Dk=. J ~ 



22H 

80H 

EOC 

20H 

80H 

DS1 

20H 

B,A 

2 OH 

kQH 

DS2 

20H 

C,A 

2 OH 

20H 

DS3 

2 OH 

D,A 

20H 

10H 

DSi* 

20H 

Dk 

A,D 

D3 

A,C 

D2 

A,B 

HI 



CHECK THE EOC BIT 
AND LOOP UNTIL TRUE 

LOOK AT THE DIGIT STROBES 
AND LOOP UNTIL Dl GOES TRUE 

THEN READ THE MSD 

AND STORE IN B REGISTER 

LOOK AT STROBES AGAIN 

AND LOOP UNTIL D2 GOES TRUE 

THEN READ 2ND MSD 
AND STORE IN C REGISTER 
LOOK AT DIGIT STROBES AGAIN 
AND LOOP UNTIL D3 GOES TRUE 

THEN READ 3RD MSD 
AND STORE IN D REGISTER 
LAST LOOK AT DIGIT STROBES 
AND LOOP UNTIL Dk GOES TRUE 

THEN READ LSD 

STORE LSD IN LOCATION Dk 

GET BACK 3RD MSD 

AMD STORE IN LOCATION D3 

GET BACK 2ND MSD 

AND STORE IN LOCATION D2 

GET BACK MSD 

AND STORE IN LOCATION Dl 

RESTORE CALLING STACK 
;AND RETURN 



;USE THESE LOCATIONS FOR DIGIT STORAGE 



.END 



Figure A-6. Assembly listing for A/D converter "reader". 



WEST COAST COMPUTER FAIRE 



341 



BOX 1579, PALO ALTO CA 94302 



AZ= 154*6 
EL* 21*2395 
TIME* J 7 : 59 

AZ* 153*984 
EL* 27,5999 
TIME* : 8 J 59 

AZ= 152*798 
EL* 35*2726 
TIME* J 9 J 59 

AZ* 151*414 
EL= 44,9193 
TIME* t 10 t 59 



RANGE* 1742 MI* DOPPLER* 9*60851 KHZ* 



RANGE* 1541 MI* DOPPLER* 8*74297 KHZ* 



RANGE* 1355 MI* DOPPLER* 7*53359 KHZ* 



RANGE* 1185 MI* DOPPLER* 5*85798 KHZ* 



AZ= 146*843 
EL* 56*4242 
TIME* : 12 : 

AZ* 138*691 
EL* 70*8016 
TIME* : 13 J 

AZ* 81*0242 
EL* 82*5105 
TIME* ** 14 ♦ 



RANGE* 1050 MI* DOPPLER* 3*33427 KHZ* 



RANGE* 952 MI. DOPPLER* 1*65726 KHZ* 



RANGE* 916 MI* DOPPLER* * 433502 KHZ* 



AZ* 

EL* 73*4254 

TIME* : 15 : 

AZ* 353*232 
EL* 59*0203 
TIME* I 45 * 59 

AZ* 347*959 
EL* 46*7227 
TIME* . 16 t 59 

AZ* 346*113 
EL* 36*8374 
TIME* : 17 ; 59 

AZ* 345*278 
EL* 28.8728 
TIME* : 19 * 

AZ* 344.707 
EL* 22*3305 
TIME* . 20 t 



RANGE* 941 MI* DOPPLER* 1 * 27285 KHZ* 



RANGE* 102.7 -ill * D0P_PLER*-3 *_1830.7 KHZ * 



RANGE* 1160 MI* DOPPLER* 5*09307 KHZ. 



RANGE* 1323 MI* DOPPLER*- 6*57922 KHZ* 



RANGE* 1506 MI* DOPPLER-- 7.60845 KHZ. 



RANGE* 1704 MI* DOPI'LER* G*28 KHZ* 



Figure A- 7 
Typical Console Output 



WEST COAST COMPUTER FAIRE 



342 



BOX 1579, PALO ALTO CA 94302 



MICROPROCESSOR STANDARDS — THE SOFTWARE ISSUES 



by 

Tom Pittman 

P.O.Box 23189 

San Jose, Ca. 95153 



Abstract 

The IEEE Computer Society Microprocesor Standards Committee 
has been working on six specific goals, including bus standards and 
three software areas: Floating Point, Relocatable Code, and 
Assembly Language. We have learned not only about the areas under 
discussion, but also some of the political and social ramifications of 
standards. This paper reports on these as well as the progress in 
the software areas. 

tntrodoctton 



The IEEE Computer Society Microprocessor Standards 
Committee first met in August 1977. I was invited to represent the 
hobbyist community, or more specifically the HomeBrew Computer 
Club, on the committee. At that first meeting the participants 
selected five areas that we thought deserved immediate attention 
and seemed achievable. Three of these had to do with bus standards, 
and are reported elsewhere. The other two were Relocatable Code' 
and Assembly Language differences. Since that time we also took on 
the task of developing a Floating Point standard. I have been 
intimately involved in the work with these last three areas, and this 
paper deals partly with their progress. 

In journalism considerable emphasis is placed on "the five Ws" 
Who, What, When, Where, Why, and how. These (slightly re-ordered) 
will form the outline of this report. The what has already been 
mentioned: it is the three software areas which we have been 
considering. 

Why 

Why standardize in these three areas? The reasons are both 
unique to the areas considered, and common among them. The 
common reasons are to minimize the dislocation in moving from one 
microprocessor to another, or from one manufacturer's products 
for a single CPU to another's products for the same CPU. In each 
one of these areas there is no uniformity" across a half dozen or 
more products. Programs developed on one system will not run 
unmodified on another. 

Prior to the advent of the microprocessor, there was generally 
only one manufacturer for a given CPU. He made the decisions and 
everyone went along. But with the micros, the chip manufacturer 
was often not the first out with a usable, standard-setting format. 
And there are dozens of systems builders using the same CPU but 
designing their own software. Some of these are good,' but 
expensive; others are in the public domain, but are badly flawed; still 
others are both economical and adequate, but come out so late' that 
they cannot influence the whole market. Most of these are 
self-proclaimed "standards" of one kind or another. What we need 
are some standards with authority, and we bring the national 
authority of IEEE Computer Society to this work. 



Relocatable Code. This particular area is of some personal 
concern to me, because I sell software to end-users. I find I am 
unable to sell a single product into every system of a single 
microprocessor, because every manufacturer puts the memory in a 
different place. I am obliged to support a variety of placements for 
the same program, and some potential customers simply cannot use 
it because it is uneconomical for me to support their perticular 
memory configurations. Result: higher costs for me, and higher 
prices to the customers (or it is simply unavailable). If I could sell it 
in relocatable form, one version would be sufficient. 

So far I have had opportunity to examine a dozen or so relocatable 
code formats now on the market. I have yet to see one which will 
permit me to write the kinds of programs I sell. I have yet to see 
one that will work equally well for any of the several 
microprocessors I support with software. I hope I can influence the 
committee to adopt a standard that meets these requirements. 

One of the major cost factors in the use of microprocessors is 
the software. If the adoption of a good relocatable code standard 
could reduce the costs of software houses, not only would their 
software become more widely available, but more companies would 
find the software business profitable, in spite of the increased 
competition and reduced prices. 

Assembly tangoage. As microprocessors become more 
specialized, cheap, and numerous, more and more people will be 
obliged to write programs for several different chips. I do this, and 
one of the major sources of first pass assembly errors is the use of 
»BZ« in 6800 programs, "BEQ" in 8080 programs, "JZ" in 6502 
programs, etc It is precisely the same instruction in each 
processor I am dealing with, but each assembler spells it differently. 
Even worse, when I write an 8080 program for one assembler, it 
requires extensive editing before another will accept it. Companies 
whose product lines cross CPU lines, educators who must be up on all 
new processors, and consultants like myself want and need some 
uniformity. 

Note that we are not trying to define a standard instruction set. 
Rather, we would like to say that tf a microprocessor has an 
instruction that does thus, then this isTRe standard name for it. If it 
has this particular addressing mode, this is how to code instructions 
to use it. 

Ftoattne Point. Last time I looked, nearly every different BASIC 
on the market had a different way of doing arithmetic. Some of these 
had subtle flaws which could destroy computational precision. Many 
hobbyists would not notice the difference, but often these routines 
are used in scientific calculations outside the strictly hobbyist 
community. I think I would prefer not to drive over a bridge whose 
stress analysis was computed in Sphere BASIC [1 J. With standards 
in this area, we can expert the same algorithm to produce the same 
answers in any processor, and moreover, we can expect the 
answers to be correct. 



WEST COAST COMPUTER FAIRE 



343 



BOX 1579, PALO ALTO CA 94302 



) 



Who 

Who is in favor of standards? Who opposes them? Who is doing the 
work? This is a touchy question. 

Almost without exception, the opponents to standards are the 
designers, both individual and corporate. The individual designers 
are perhaps afraid that standards will inhibit their creativity. I 
suppose a poorly conceived standard might do that, and if the best 
designers refuse to participate in the standardization, they may well 
bring about the object of their fears. On the other hand, as Carl 
Helmers pointed out so clearly, standards are the basis from which 
you deviate. [2] Their main purpose is to reduce unnecessary 
variation, not to inhibit progress. 

By "corporate designers'" I mean those companies whose position 
of leadership in their field gives them the selection of market 
direction. IBM still commands the vast majority of large computer 
business, and IBM's participation in standards efforts is notoriously 
grudging. [3] The larger semiconductor houses are similarly 
staying away from the IEEE work in droves. I doubt that anyone 
would actually say this, but I think they firmly believe, "We don't 
abide by standards, we make them." In our industry this is a little 
more dangerous than it iTFoF IBM: EBCDIC is carried on over ASCII 
by the sheer weight of IBM's market share, but none of the 
semiconductor houses have that big a market share. So they are 
gambling that our committee will not actually produce any 
widespread standards. I think they are wrong, and they may find 
themselves where UNIVAC was with round-hole tab cards. 

Who supports the work? The most visible seems to be OEMs who 
use microprocessors from various manufacturers, or who build 
compatible peripherals. These companies have suffered the most 
from lack of standards. In the software areas, however, it is hard 
to identify these — perhaps there are FEW. 

I suspect the greatest number of supporters are the end users, 
who are only now discovering that the lack of standards (both 
hardware and software) is costing them time and money. 
Unfortunately the users have had no clout in these matters. More 
about this later. 

We are also getting a great deal of support from the smaller 
semiconductor houses. Perhaps they see the handwriting on the 
wall: "Participate or be left out." 

When. 

When will we begin to see some results? Will not any meaningful 
standards take so long to formulate that they become irrelevant? 
This is a good question. Standards committees often take years in 
their deliberations. The microprocessor fields are moving so fast 
that what is agreeable today may be nonsense in two years. 



We recognized very early the problem of obsolescence. Instead 
of quarterly meetings, as I understand is usual for standards 
committees, we meet monthly. Even so, for those of us who are 
accustomed to turning a product around in a few weeks or months, 
the progress has been excruciatingly slow. But it is progress. 

The other defense against obsolescence is careful planing with 
the future in mind. None of us are omniscient, and it is certainly 
more difficult when the movers and shakers of the industry decline 
to participate, but I think we can succeed here. 

How . 

How can you, the user, help make our standards work succeed? 
Talk it up. Make sure the manufacturers and retailers where you 
spend your money know that you will not buy nonconforming 
products. We need grass-roots suport. We need sources of 
material that may affect our deliberations; perhaps you can be part 
of a supply-line. 

And we need no competition. I realize that sounds awful. Five 
standards are no standards. Encourage those who want to call what 
they are doing "standard" to work with us, not against us. When we 
started there was no national body effectively working with 
microprocessor standards. As far as I know we are still alone in 
this, though there have been other attempts. If we can refrain from 
diluting the national interest in standards, we have a better chance of 
making what the IEEE is doing stick. 

Conctoston. 

We wttt have standards. If we work together, they will be good 
ones, andlhey will come sooner. If we drag our collective heels, 
they may not be so good, and they will certainly take longer coming. 

References. 



[1] RichDidday "A Tale of Four B ASICs" KILOBAUD Jan 78 p54. 
[2] Carl T Helmers, Jr, in an unpublished remark at the S-100 

Symposium at Diablo Valley College Nov 20, 1976. 
[3] An example of this is quoted in DATAMATION Dec 77, p224. 



WEST COAST COMPUTER FAIRE 



344 



BOX 1579, PALO ALTO CA 94302 



PROPOSED IEEE STANDARD 

FOR THE 

S-100 BUS 



Preliminary Specification 

by 

George Morrow 
Thinker Toys 
1201 - 10th Street 
Berkeley, CA 94707 
(415) 527-7548 

and 

Howard Fullmer 

Parasitic Engineering Inc. 

P. 0. Box 6314 

Albany, CA 94706 

(415) 547-6612 



The follwoing is a preliminary specification for the computer bus 
commonly known as the S-100 Bus. This bus was first introduced by MITS Inc. 
with their Altair kit. It has since spread throughout the electronics 
industry and beyond. Today over a hundred manufacturers make products 
which claim to be compatible with the S-100 bus even though, until now, 
no complete specification has been available. 

This document is a specification for both timing and signal discipline. 
Signal discipline is described using the Bus Master/Bus Slave language 
long associated with Digital Equipment's PDP 11. This point of view facili- 
tated the development of a simple and highly reliable DMA protocol which is 
perhaps the most important aspect of the standard. 



Acknowledgement 

We would like to thank tfre other members of the Microprocessor Standards 
Committee for the.r support and invaluable comments. Special thanks to 
Robert Stewart who is Chairman of the Committee. His leadership and orga- 
nizational skills have been a great aid to all of us. 



WEST COAST COMPUTER FAIRE 



345 



BOX 1579, PALO ALTO CA 94302 



Proposed IEEE Standard 
for the S-100 Bus 



S-100 BUS SIGNAL DEFINITIONS: 

Pin No . Signal Name & Type Polarity 

1 



1 



+8 volts (B) 



+16 volts (B) 



XRDY (S) 1 ' 10 



k 


VI (S) 10 
o 


5 


VI, (s) 10 


6 


vi 2 (S) 10 


7 


_.vi. 3 _(s) 10 


8 


M\ k (S) 10 


9 


vi 5 (s) 10 


10 


vi 6 (s) 10 


11 


vi ? (s) 10 


12 


- 


13 


- 


]k 


- ; ; f: ' 


15 


- 


16 


- 


17 


- 



pos i t i ve 



Instantaneous minimum greater than 
7 volts, instantaneous maximum less 
than 35 volts, average maximum less 
than 11 volts. 

Instantaneous minimum greater than 
]k volts, instantaneous maximum 
less than 35 volts, average 
maximum less than 20 volts. 

One of two ready inputs to the 
current Bus Master. The bus is 
ready when both these ready 
inputs are true. 

Vectored interrupt line 



Not speci f ied 



PRELIMINARY SUBJECT TO REVISION 




WEST COAST COMPUTER FAIRE 



346 



BOX 1579, PALO ALTO CA 94302 




The control signal to disable 
the 8 status signals^. 

control signal to disable, 
6 command/control signals . 

Not specified. 
Not specified. 

The control signal to disable 
the 16 address signals**. 

The control signal to disable 
the 8 data output5 signals. 

The master timing signal for 
the bus. 

Not specified. 

A command/control signal used 
in conjunction with PHOLD to 
coordinate Bus Master transfer 
operations. 



The acknowledge signal to either 
of the bus ready signals XRDY, 
PRDY or to a HLT instruction. 

Not specified. 

Address bit 5. 

Address bit 4. 

Address bit 3. 

Address bit 15 (most significant). 

Address bit 12. 

Address bit $. 

Data out bit 1. 

Data out bit (least significant) 

Address bit 10. 



BOX 1579, PALO ALTO CA 94302 



S-100 Bus 


PRELIMINARY 
Signal Definitions 


38 


D0*t (M) 


39 


D05 (M) 


ko 


D06 (M) 


k\ 


D12 (M) 


m 


D13 (M) 


hi 


D17 (M) 


hk 


SMI (M) 



SUBJECT TO REVISION 



kS 



hG 



hi 



1*8 



SOUT (M) 



SINP (M) 



SMEMR (M) 



SHLTA (M) 



^9 


CLOCK 


50 


GND 


51 


+8 volts (B) 


52 


-16 volts (B) 



posi tive 



Data out bi t h. 

5. 

6. 
Data in° bit 2. 
Data in bit 3- 
Data in bit 7 (most significant). 

The status signal which indicates 
that the current bus cycle/ is an 
op-code fetch. 

The status signal identifying the 
data transfer bus cycle of an OUT 
instruction. 

The status signal identifying the 
data transfer bus cycle of an IN 
instruction. 

The status signal identifying bus 
cycles which transfer data from 
memory to a Bus Master which are 
not interrupt acknowledge instruc- 
tion fetch cycle(s) . 

The status signals which acknowledges 
that a HLT instruction has been 
executed. 

Not specified. 

Signal and pwer ground. 

See comments above for pin #1. 

Instantaneous maximum less than -\h 
volts, instantaneous maximum greater 
than -35 volts, average minimum 
greater than -20 volts. 



53 
5* 

55 
56 
S7 



SSWI 



EXT CLR 



negat i ve 



Not specified. 

A reset signal to reset Bus Slaves. 
When this signal goes low, it must 
stay low for at least 3 bus states. 

Not specified. 



PRELIMINARY SUBJECT TO REVISION 



WEST COAST COMPUTER FAIRE 



348 



BOX 1579, PALO ALTO CA 94302 



S-IOO .,„ c- , ,, ,. PR . FI . ,M, MARY SUB.1FCT TO RfVISION 
i> 100 Bus Si(|ii.il Del in rj. ions 



58 

59 

60 

61 

62 

63 

6k 

65 

66 

67 

68 

69 
70 
71 
72 
73 

74 

75 

76 
77 

78 



PHANTOM 
MWRITE (B) 

PS" 

PROT 

RUN 

PRDY (S) 10 

pTnT (S) 10 

PHOLD (M) 10 
PRESET (B) 10 

PSYNC (M) 
PWR (M) 

PDBIN (M) 



pos i t i ve 



pos i t i ve 
negative 



positive 
negat i ve 

positive 



Not specified. 

Not specified. 

Not specified. 

Not specified. 

Not specified. 

Not specified. 

Not specified. 

Not specified. 

Not specified. 

Not specified. 

The logical negation of PWR and 
S °UT; th| s signal must follow PWR 
by not more than 30 ns. 

Not specified. 

Not specified. 

Not specified. 

See comments above for pin #3. 

The primary interrupt request 
bus signal. 

The command/control signal used in 
conjunction with PHLDA to coordinate 
Bus Master transfer operations. 

The reset signal to reset bus master 
devices. When this signal goes 
low, it must stay low for at 
least 3 bus states. 

The command/control signal identifying 
BS r (See bus states comments.) 

The command/control signal signifying 
the presence of valid data on the 
DO bus 8 . 

The command/control signal that 
requests data on the Dl bus^ from 
the currently addressed slave. 



PRELIMINARY SUBJECT TO REVISION 



WEST COAST COMPUTER FAIRE 



349 



BOX 1579, PALO ALTO CA 94302 



S- 100 Bus 


S i (jn«i 1 IV 1 i 


79 


A0 (M) 


80 


A1 (M) 


81 


A2 (M) 


82 


A6 (M) 


83 


A7 (M) 


8*» 


A8 (M) 


85 


A13 (M) 


86 


A\k (M) 


87 


A11 (M) 


88 


D02 (M) 


89 


003 (M) 


90 


D07 (M) 


91 


D\k (S) 


92 


DI5 (S) 


93 


DI6 (S) 


9^ 


DM (S) 


95 


DI0 (S) 


96 


SINTA (M) 



97 

98 
99 

100 



PKriiMiNARY siin.ircr to revision 



pos i I i ve 



SWO (M) 

SSTACK 
POC (B) 

GND 



negative 



negative 




The status signal identifying the 
instruction fetch cycle(s) that 
immediately follow an accepted 
interrupt request presented on 
PTRT. 

The status signal identifying a 
bus cycle which transfers data 
from a Bus Master to a slave. 

Not specified. 

The power-on clear signal for all 
bus devices; when this signal goes 
low, it must stay low for at least 
3 bus states. 



Signal and power ground, 
PRELIMINARY SUBJECT TO REVISION 



WEST COAST COMPUTER FAIRE 



350 



BOX 1579, PALO ALTO CA 94302 



1 



S- 100 Kir. Sic|ii.-il D««f jn i I ioo-, 

Bus Signal Notes 

There arc three types of signals on the S-100 bus. M stands for 

Bus Master. Signals designated by (M) are those which a Bus Master must 

generate. The Bus Master currently controlling the bus has the responsibility 

for faithfully generating a\± signals of type M during the duration of its 

control of the bus. 

S stands for Bus Slave. A Bus Slave need generate only that subset of 

of type S signals which are necessary to communicate with Bus Masters 

which have the ability to address the slave. 

B stands for Bus. Any bus signal which is not of type M or S is by 
default type B. This is not to say that some Bus Master is not in fact 
generating one or more type B signals. Rather a type B signal is one that 

(a) not all Bus Masters are required to generate, and (b) not any Bus Slave 

is required to generate. 

A Bus Master is, by definition, a bus device which generates at least 
all of the type M signals. A Bus Slave is a bus device which generates 
some subset of type S signals. A Bus Master may also be a bus slave and 
vice-versa. Memory devices are almost always Bus Slaves while DMA devices 
are usually both a Bus Master (data transfers) and a Bus Slave (accepting 
commands). Central Processing Units are usually Bus Masters. 

2 
The 8 status signals are: SMEMR, SINP, SM1 , SOUT, SHLTA, SSTACK 

(not specified), SWO, and SINTA. 

The 6 command/control signals are: PHLDA, PSYNC , PDBIN, PINTE 
(not specified), PWR, and PWAIT. 

Z, 
The 16 address signals are: A15, A1*», A13, A12, All, A10, A9, A8, 

A7, A6, A5, M, A3, A2, A1 and A0. 

PRELIMINARY SUBJECT TO REVISION 



WEST COAST COMPUTER FAIRE 



351 



BOX 1579, PALO ALTO CA 94302 



PRFLIMINARY SlUUrCT TO REVISION 
S-IOO Bus Signal Definitions 

5 Data output is specified relative to a Bus Master. By definition, data 
which is transmitted by a Bus Master is always data output and occurs on the 

DO bus. 

6 Data input is specified relative to a Bus Master. By definition, data 
which is received by a Bus Master is always data input and occurs on the Dl 

bus. 

7 A bus cycle is a collection of bus states (BS^ . A bus cycle always 
starts with a BS, state which is followed by a BS 2 s^te. After BS 2 comes an 
indeterminate number of BS w states. A bus cycle may have zero-BS w states or 
it may have an arbitrarily large number of BS w states. BS 3 is the bus state 
which follows BS w (or BS 2 if there are no BS w states present). BS 3 is followed 
by zero to three BS. states. A BS 3 or BS. state terminates a bus cycle. 

8 The DO bus is the following set of signals: D07, D06 , D05 , Do*, D03, 

D02, D01, DO0. 

9 The Dl bus is the following set of signals: D17. Dl6, D15. Dl*, D13, 

D12, D11, D10. 

W Ttrese--s1^nat*-shottW be generated by an ..open collector bus driver 
capable of sinking at least 20 ma. at no more than .5 volts. 

Signal Characteristics 

Bus drivers must sink at least 2k ma. at no more than .5 volts. Except 
for open collector drivers, they must source at least 2 ma. at no less than 

2.* volts. 

Bus receivers must have diode clamps to prevent excessive negative 
excursions. Any bus signal less than .8 volts must be recognized as a logic 
zero and any signal more than 2 volts must be interpreted as a logic one. 

Receivers are to source no more than .8 ma. at .5 volts and are to sink 
no more than 80 pa. at 2. A volts. The capacitive load of an input from the 
bus must not exceed 25 pf- 

-. ,..,..« r,w run iri>T -rr\ nci/IC IftM 

rKtXI Mi NART bUDJCl/l IU ntiiJiun 



WEST COAST COMPUTER FA1RE 



352 



BOX 1579.PAL6 ALTO CA 94302 



PRELIMINARY SUBJECT TO REVISION 
S-IOO Bus Signal Definitions 

Bus State Comments 

BS. is the initial bus state of a bus cycle. The address lines are in 
a state of flux during through most of BS. and PSYNC is active starting with 
the second half of BS.. 

BS 2 is the second bus state when address data, status, and ready 
signals become stable. 

BS w states occur as needed to synchronize a Bus Master with a Bus Slave 
which has brought one of the ready lines false. 

BS^ is the data transfer state when a Bus Master transfers data to a 
slave or vice- versa. 

BS. is a state during which the bus is idle. 

Timing Notes 

All timing references in the timing diagrams are specified at the 
midpoint of the rising or falling edge of the signal. Rise and fall times 
are not to exceed 50 ns . 

All signals referred to in the timing diagrams are S-100 Bus signals 
with the exceptions in note 6. 



The falling edge of PWR must occur within the area shown. The 



rising, edge "must occur within a similar area of the next Bus State. 

2 - . '" 

BS -'Ps either BS- or SS . / 

* ' ' • * 2 .*, w 

Addresses, Data, and Status signals must remain stable durinq BS . 

3 w 
i» 
The interrupt lines fffust be stable for the period shown in the 

Bus State preceding BS. of an op-code fetch. The proposal is that when 
an interrupt line is true, it remains true until the CPU responds. 
Normally, this response would be an I/O instruction that addresses the 
interrupting device. 

PRELIMINARY SUBJECT TO REVISION 



WEST COAST COMPUTER FAIRE 



353 



BOX 1579, PALO ALTO CA 94302 



PRELIMINARY SUBJF.CT TO REVISION 
S-IOO Bus Signal Definitions 

The rising edge of PWAIT must occur within the area shown. The 

falling edge must occur within a similar area following the rising edge of 

the logical AND of PRDY and XRDY. 

Signals prefixed by "DMA" refer to internal logic of the new Bus 

Master. These signals control the buffers of this Bus Master which drive 

the Command and Control, Status, Address, and Data output Bus lines. The 

timing diagram depicts logic levels which are high when these buffers are 

disabled. 

7 ( 
8. 



BS„ is either BS_ or BS. 



BS is either BS. or BS, 



PRELIMINARY SUBJECT TO REVISION 



WEST COAST COMPUTER FAIRE 



354 



BOX 1579, PALO ALTO CA 94302 



PRELIMINARY SUBJLCT TO REVISION 

S'\00 Bus Timing 

An ii*ne& in nanoseconds 



BS, 


BSe 


BS 3 









Ais-o 




PSYNC 



t> 123 -~ 



5+afas 




5<*<140-+\W 5<*<t40-*\ 



PDBIN 



«■ XZSCO p- 



\ 



+-x>o 



oi vyyvv/Hicih zVy 



£ a < iso-*\ h- o<x <ioo-*\ K- 



Y//7////A 




777 



Memory or l/O Read 



PRELIMINARY SUBJECT TO REVISION 



WEST COAST COMPUTER FAIRE 



355 



BOX 1579, PALO ALTO CA 94302 



PRELIMINARY SUBJECT TO REVISION 



~&Si 


/\ll iimc.9 in nanose.coH<is 




E>S a 


BS 3 











**l \ 



.5<*</2o 
PSYNC 



5 < 4 < IZO 



V 



Aiso 




\ 




I «/ 

* < SO -H |-*- 



23 



Stat 



<AS 



M WRITE 




A 



*>& 



jt<zzo-A 
~4 U— 



■*>SOO 



© 



\LJ 



1 



t» 



/oo 



A ^30-* 



\r 



-» k-x ^30 



1 




V- 



A>tOO\*~ j(>IOO 



\ 




Memory or I/O Write. 



WEST COAST COMPUTER FAIRE 



356 



BOX 1579, PALO ALTO CA 94302 



PRELIMINARY SUBJECT TO REVISION 



A,!! "fims-S in f?a.*755cconJ< 



BS«® 



BsS^ ® 



♦ * = 50O 



3 5cc + / 



35/ 






VI 7-*: 



PRELIMINARY SUBJECT TO REVISION 



Inter- rt/pf <and' Wa/V Tim'tno 
PRELIMINARY SUBJECT TO REVISION 




WEST COAST COMPUTER FAIRE 



357 



BOX 1579, PALO ALTO CA 94302 



PRELIMINARY SUBJECT TO REVISION 



All times in «a«o^cco»?of<s 




Bty-s E.xcha.nge, Timing 



PRELIMINARY SUBJECT TO REVISION 



WEST COAST COMPUTER FAIRE 



358 



BOX 1579, PALO ALTO CA 94302 



PRELIMINARY SUBJECT TO REVISION 

Direct Memory Access (DMA) Requirements 

Introduction 

A DMA cycle is a special case of a Bus Master taking over the Bus to 
execute a memory read or write cycle. A DMA device is required to generate 
al 1 type M (Bus Master) signals on the Bus. 

The Bus Exchange 

PHOLD is the signal used by one Bus Master to request that another 
Bus Master give up control of the Bus. PHOLD must not be asserted true 
unless PHLDA is false and PRIORITY (if implemented) is true. 

One Bus Master (CPU) relinquishes control of the Bus to another 
(DMA) as shown in the Bus Exchange Timing diagram. The DMA device must 
control the CPU's bus drivers through the use of ADD DSB, DO DSB, 
STAT DSB and C/C DSB. It must also control its own bus drivers through 
the use of signals similar to those shown in note 6. 

The CPU (current master) and the DMA device (new master) must both 
drive the Command and Control signals for at least 200 ns at two different 
periods as shown in the Bus Exchange timing diagram. During these two 
times, the Command and Control signals are required to have the following 
levels: 

1. PSYNC = 

2. PWAIT = 

3. PHLDA = 1 
k. PDBIN = 
5- PWR = 1 

PRELIMINARY SUBJECT TO REVISION 



WEST COAST COMPUTER FAIRE 359 BOX 1 579, PALO ALTO CA 94302 



nu . „ . , PRELIMINARY SUBJLCT TO REVISION 
DMA Rin|Ui rcmcnts 

The DMA cycle timing sequence which follows is a suggested implementation 
that meets all the requirements of the generalized Bus Exchange timing. 
The sequence is controlled by the edges of <J)-. At some previous time, 
PHOLD was asserted according to the limitations described in the first 
paragraph of this section. PHLDA is asserted true by the CPU during BS 
of the last CPU bus cycle. The bus exchange begins on the falling edge 
of <J> ? while PHLDA is true (labeled 1 on the timing diagram). The DMA 
bus cycle then proceeds as described in the following section. At edge 8 
of <j>„, PHOLD is driven false by the DMA device and henceforth the CPU is 
again in control of the bus. 

Proposed DMA Cycle Sequence 
4> 2 edge: 

1. CPU Address and Data bus drivers turned off. DMA Command and 
Control drivers turned on. The CPU and DMA Command and Control signals 
must match values described in the previous section. 

2. CPU Status and Command and Control "drivers' turned off. DMA 
Address, Data output and Status drivers turned on. PSYNC = 1. 

3. No change. 

k. PSYNC = 0. PDBIN = 1 if memory read or PWR = if memory write. 

5. No change. 

6. PDBIN = and PWR = 1. 

7. CPU Command and control drivers turned on. DMA Address and Data 
output drivers turned off. 

8. CPU Address, Data output, and Status drivers turned on. DMA 



Status and Command and Control drivers turned off. PHOLD = 1. 



PRELIMINARY SUBJECT TO REVISION 



WEST COAST COMPUTER FA1RE 360 BOX 1 579, PALO ALTO CA 94302 



u 






CO 

v 


a. 



4 



£0 



V. 



-JQ. 



CQ 



CO 



\o 



*o 



«0 



N 



M 

^ 



PRELIMINARY SUBJECT TO REVISION 




< 


<0 


D 


^ 


^J 


^> 


X 


U> 


CL 


a 



Q 

X 
Q. 



PRELIMINARY SUBJECT TO REVISION 



CQ 
O 

Q_ 






WEST COAST COMPUTER FAIRE 



361 



BOX 1579, PALO ALTO CA 94302 



TWO CHEAP VIDEO SECRETS 

Don Lancaster 
Synergetics 



CHEAP VIDEO 

Cheap Video is a brand new 
collection of hardware and soft- 
ware ideas that dramatically slash 
the cost and complexity of both 
alphanumeric and graphics micro- 
processor based video displays. 

A typical cheap video system 
(A-l) lets you do things like a 12 
X 80 scrolling display using only 
seven ordinary IC's with a total 
circuit cost as low as $20, and 
transparently running on a micro- 
computer system that still has as 
much as 2/3 of its throughput 
remaining for other programs. 

Cheap video displays run on 
an ordinary TV set with unmodified 
video bandwidth, even when doing 
64 or 80 character lines. Changing 
a single IC switches you between 
upper or combined case alphanumer- 
ics or high resolution or color 
graphics modes. 

The basic idea behind cheap 
video is to totally eliminate any 
TVT system timing and let the 
micrQp_roc.essor._dd. all the work. 
As (A-2) through (A-4) show us, the 
object is to use both the existing 
microcomputer and tv set with a 
minimum of modifications, putting 
as little dedicated hardware as 
possible between the two. 

There are two key secrets 
involved in cheap video. One is 
a software secret called a Scan 
Microinstruction . The other is 
its hardware companion called 
an Upstream Tap . 

Together, the scan micro- 
instruction and the upstream tap 
cause the microcomputer to output 
characters at a rate fast enough 
for direct video use. 



THE SCAN MICROINSTRUCTION 

A Scan Microinstruction is a 
subroutine combination of ordinary 
instructions running at ordinary 
speed that tricks the computer into 
putting its program counter on the 
address bus and sequentially 
advancing the addresses fed to all 
memory in the computer at a one 
word per microsecond rate . 

For the 6502, a suitable scan 
microinstruction looks like this: 

Enter Via 
Subroutine 



t. 



6000 LDY AO AO 
6002 LDY A0 A0 
6004 LDY A0 A0 



r 



60 1C LDY A0 A0 
601E RTS 60 



Exit to main 
Scan Program 

As (A-5) shows us, the address 
lines on a 6502 are normally a mix 
of "go fetch" values -and program count- 
er values. When the program counter 
is on the address bus, the bus will 
typically advance at a one or two 
microsecond rate. 

When we do a scan microinstruct- 
ion, the program counter appears 
continuously on the address lines 
(A-6) and advances the address bus 
binary counter style, once per 
microsecond. 

The scan microinstruction is 
usually stored in a small 32 x 8 
PROM. The length of the sequence 
decides the total number of char- 
acters or graphics chunks output 
per line. 



WEST COAST COMPUTER FAIRE 



362 



BOX 1579, PALO ALTO CA 94302 



As the address bus advances 
during the scan microinstruction, 
each and every memory in the 
entire computer is sequentially 
addressed. By using a redundant 
calling of the scan micro- 
instruction, the subroutine be- 
comes portable and can be moved 
around as needed to pick up 
various lines stored in display 
memory, or can call the various 
dot combinations needed for a 
particular part of an alpha- 
numeric character. 

Usually, a scan micro- 
instruction will last 32,40,64, 
or 80 microseconds, the normal 
length of a selected character 
or graphics line. The scan 
microinstruction is called over 
and over again as part of a 
larger .main scan program. 
It is this larger scan program 
that causes TVT refresh, while 
the scan microinstruction 
causes individual characters 
to be output at a proper rate. 

With some add-ons, the 
TVT refresh process can be made 
totally transparent, letting 
you run other computer prog- 
rams at the same time you 
provide a continuous display. 



THE UPSTREAM TAP 

Normally, while the scan 
microinstruction is controlling 
the computer, nothing else is 
allowed data bus access. This 
means we are addressing every- 
thing else in the computer, but 
preventing everything else from 
doing anything useful at the 
same time. 

Somehow, we have to get 
characters out of the display 
memory when the memory does NOT 
have data bus access. This is 
done with the upstream tap of (A-7) . 

An upstream tap is nothing 
but eight pieces of wire at the 
output of the display memory but 
before the output bus drivers. 
Extra enable logic activates the 
otherwise normal display memory 
RAM during a scan microinstruction 
but does so only as far as the 
upstream tap . 

The upstream tap in turn is 
connected to the interface hard- 
ware for conversion to serial 
video. 

FOR MORE READING 

Complete details on cheap 
video techniques appear in the Sams 
Cheap Video Cookbook. 



WEST COAST COMPUTER FAIRE 



363 



BOX 1579, PALO ALTO CA 94302 




A-l This PAIA TVT 6-5/8 is a typical cheap video system. Only 
seven low cost integrated circuits are needed for a high 
performance alphanumeric or graphics video display. 



WEST COAST COMPUTER FAIRE 



364 



BOX 1579, PALO ALTO CA 94302 



A MICROCOMPUTER HAS 



; 



A jClqckJ -that ca»o $t ivseo f©i?. 



* A I MEMORY TV4A.T CA»o fc£ OSEO TO 
t>TOR£ CHARACTERS, OP-COOS, OR. 
GRAPHIC SyMfc&US. 



Some 



AODR.ESS 



LIkjes Thai caio 



SfeQVfcloTlALLX' ACCESS CWARflc-rgRS . 



SOM£ I DATA I Liioe*> THAT CAn> 

control Haw wg Access MEMoRf. 

AwO jCoiOTgOU | Llioe^ THAT LET 
OS SWITCH BfeTWe.mis> A)iO€o 4mO 









□ 



































A-2 



Cheap Video gets us from here 



WEST COAST COMPUTER FAIRE 



365 



BOX 1579, PALO ALTO CA 94302 



A "W S6T NEEDS 




DOTS TO F6R.M CHAfcAC-TfeG* OR. 
GRAPHIC S^iva&ouS, AfcfcW»ioG AT "CHE 

Right pLAcg at Tne £a<»ht "time. 

H©*Al©h*TAL AwO MfcfcTlCAL |^n>C | foCiti 
T© LOCK. THE T\J TO THg MtCfcO COMPUTE^. 



tf |<Coi^p£io^AT>e»0 Oft. *OM£ ©TflfcR. W*< 

TO NtAK£ Lap F&fc. IX LtMtf&O 6AmOu»»0TH 




5oi*£ iioPot Access SvjcH AS A <LiP-o«o 



RF MoOoLATO*. OR. A HErtOpHOKje JACK. 
USED AS A DifteCT ViO£o CWAw&gOVJgfc. 

$U*IT£H. 





Y=7 



A- 3 



To here with 



WEST COAST COMPUTER FAIRE 



366 



BOX 1579, PALO ALTO CA 94302 



-5 



c£ 


0. 


,0 


5 


h 











at 
O 


<£ 


^» 


5 


> 


o 




0£ 


a. 


<x 


< 


X 


m 




1 


ul 

VJ 


U 


< 




UJ 


a 


2 


CD 


r 





*- 


V9 


2 


Ul 




VI 


5 


O 


ul 


Of 


T 


a. 


h 







V 


bi 




2 1 


CO 




2 




o 




U 







1 


/" "^ 


SI 


> 


ia 


\r 




v. ir i 




., 


_l 




0) 
rH 
.Q 
•H 
CO 
CO 

o 
a 

CO 
•H 

CO 
ed 

CO 
•H 

-P 

«H 

o 



-p 
■p 

•H 



CO 

< 






WEST COAST COMPUTER FAIRE 



367 



BOX 1579, PALO ALTO CA 94302 



-*»j [■#- I MitC 



ADDRC5S 




Time. 



A-5 Typical behavior of a 6502 address bus during 

a normal program. Bus may advance at a one or two 
microsecond rate, can loop, or can fetch higher 
or lower memory values. 



A0P££>* 




-ni*s 



A-6 A secret cheap video scan microinstruction forces the 

6502 to uniformly advance addresses once each microsecond 
from a starting address. This sequentially accesses 
a block of display memory corresponding to a horizontal 
character line or its graphics equivalent. 



WEST COAST COMPUTER FAIRE 



368 



BOX 1579, PALO ALTO CA 94302 



■s 6«iSTi**G 



*. W£vO 



K>6vJ C? L66»\C 

Logic ok* of 







TT 



^ 



lie* 1 

RAM 



Q* 



RAM 



D, 



RAM 



HCJfJL 

Ram 



^^F 



Ct 



RAM 



IK* 1 
RAM 



RAM 



"-r 



[1 



RAM 



f= 

/N^ AOOfUss 
JjCOT 



OT€RwAU 
Till- &7AT6 
Bui ORweRS 



nfir 



n^r 



ii 



Ti 



ii 



in 



■v— » 



lflililf 



O 



r*> 



i^r 



t^T 



&■ 



!^l 



fr 



"IT 



D87 



D8C 



085 



084 



083 



082 



^ DATA 
6u* 



£r 



OBI 



06o 



■07 

■oc 

05 
04 



>-os> 






New 

UPSTREAM 
TAP 



SCAlO EWASIE 



A-7 A secret upstream tap works with the scan microinstruction 

to output characters. Total DMA hardware consists of eight 
pieces of wire. 



WEST COAST COMPUTER FA1RE 



369 



BOX 1579, PALO ALTO CA 94302 



A RECIPE FOR HOMEBREW ECL 
Chuck Hastings, ^890 Hamilton Avenue, San Jose, CA 95130 



Abstract 



Emitter-coupled logic (ECL) is understood 
by most computer designers to be the fastest 
stuff available, which it is — and as too diffi- 
cult for anyone but the largest companies to 
design with, which it isn't! If an appropriate 
recipe is followed, ECL systems can be developed 
with very limited resources with as good, or 
better, chances of technical success as with 
equivalent TTL systems. Thus, homebrew ECL is a 
serious possibility for applications which need 
the speed. Such applications may occur in some 
technical approaches to music synthesis, speech 
analysis, and personal scientific computing 
involving matrices or partial differential 
equations. 

Such a recipe isn't written down anywhere — 
existing ECL tutorials make ECL design sound 
formidable. However, a careful amateur can 
achieve a reliable 100 MHz small system today if 
he knows what to do. This paper will present a 
practical recipe, used once successfully, for 
designing, building, and troubleshooting a small 
ECL system with the level of resources available 
in a well-equipped homebrew lab. 

This recipe was developed during the course 
of one task in a project at Racal-Milgo, a 
medium-sized Florida company with no previous 
ECL systems experience. The circumstances were 
-hv many ways quite s imil ar to those of a home- 
brew project. The outcome of the task was a 
2^-bit general -purpose stored-microprogram 
computer, capable of 6,000,000 three-address 
fixed-point add/subtract/Boolean instructions or 
900,000 fixed-point multiply instructions per 
second, which was completed and has since been 
operated 10 hours a day for several months in a 
signal -processing system. 



Introduction 

What I hope to do in this presentation is 
to get you thinking about emitter-coupled logic 
(ECL) as a viable alternative for homebrew 
projects requiring very high processing speed, 
perhaps in music synthesis (see Reference l), 
speech processing, or simply fireside number- 
crunching. 

Why ECL? For openers, the industry- 
standard 10,000-series ECL (hereafter referred 
to as "10K") offers at least twice the net 
speed of Schottky TTL when actually designed 
into typical systems. 10K provides a more 
natural and less brute-force approach to high- 
speed signal transmission than Schottky, and is 
in a number of respects actually easier to use. 

ECL has probably not been considered for 
many applications where it would have been 
appropriate, both in industry and more recently 
in hobby work, because people tend to be scared 
to death of it. Frankly, ECL has an image 
problem! (See Figure 1 below.) Like many 
image problems, this one has some basis in 
truth; but there has been a considerable 
overlay of exaggeration, distortion, and 
mythology, which I will do my best to dispel 
based on the results obtained in one medium- 
sized computer hardware development project. 

Much of what I have to say concerns a 
^ubj ect euphenri st i ca 1 1 y ca M ed """ i nterconhect ion 
practice," which means all the things you have 
to do to keep your logic from being thoroughly 
confused by its own noise after you turn it on. 
Except as occasionally noted, al 1 of my remarks 
concern 10K in a wirewrap environment. Later 
on, I'll have a little to say about other ECL 
families such as MECL Ml, PECL III, and 
Fairchild 100K. 




WEST COAST COMPUTER FAIRE 



Figure 1. Frankly, ECL has an image problem! 

370 BOX 1 579, PALO ALTO CA 94302 



A good wirewrap board, believe it or not, 
is an excellent signal environment for high- 
speed logic. I have met people who solemnly 
claimed that one can't wirewrap ECL, but it 
just ain't so* Communications Satellite 
Corporation, for instance, has done it for 
years. I have also met people who claimed 
that wirewrap fabrication was something which 
one does only for prototypes, and that it is 
too expensive to be a manufacturing technique; 
but Modular Computer Systems, in Florida near 
where I used to live, has been cranking out 
wirewrapped minicomputers since about the 
beginning of this decade. Much of the wirewrap 
equipment used in industry is made by Gardner- 
Denver, but there is also a company called 
OK Machine and Tool Corporation which makes a 
line of wirewrap equipment specifically 
designed for use by hobbyists. 

Since most hobbyists probably prefer to 
have their systems work without a major initial 
checkout hassle, my interconnection-practice 
recipe probably errs on the side of overkill. 
If for some underground entrepreneurial reason 
you are intensely concerned with the cost of 
replicating a homebrew ECL system once it is 
working, you can do a cost-reduction job by 
deleting some of the practices I am advocating 
one by one until the system goes bananas. 
But don't start out doing an el cheapo job — 
if the system doesn't work at all, you may not 
have the equipment, resources, and patience to 
find out why. Big companies do have the luxury 
of trading off more product development 
engineering hours against lower manufacturing 
costs, but you probably don't. The first time 
you do it, do it right. 



An Astounding Claim 



The primordial fear of ECL in the industry 
is so great that it requires some chutzpah on 
my part simply to state, straight out, that yes, 
you too can successfully build, debug, and 
operate ECL logic systems in your spare bedroom, 
garage, or rumpus room - just like TTL and MOS. 
You don't have to have the vast resources of a 
huge company like Control Data, Univac, IBM, or 
Burroughs behind you to succeed - or even those 
of a rather unusual small company such as Cray 
Research or Biomation, to name two with some 
obvious ECL expertise. 

I make this statement not on the basis of 
having an ECL computer running in my spare 
bedroom — since I have five children, I don't 
even have a spare bedroom — but on the basis 
of successfully developing a medium-sized, high- 
performance ECL mid i computer under what might 
be called primitive industrial conditions, at a 
company (Racal-Mi lgo, in Miami) having no prior 
experience building either ECL systems or 
computers. The company management did not 
particularly even understand digital computers, 




although they did have some expertise in analog 
computers. The backup resources which one 
expects to find in place in even a small com- 
puter mainframe house simply weren't there. 

To top it all off, I myself am a computer 
systems type — ones and zeroes, architecture, 
logic design, machine- level software, micro- 
programming — with very little expertise in, 
say, linear circuit design or electromagnetic 
field theory. All the same, with one sharp 
technician working with me full-time plus part- 
time help from a few other people, I was able 
to get a high-performance digital system of 
about 300 ECL 10K DiPs developed and operating 
in about 15 months. Thereafter, for several 
months, it was operated many hours a day five 
or six days a week, as part of a larger signal- 
processing system, with very few maintenance 
problems. If I can do something like that, 
probably you can too. 



The Miami Number-Cruncher 

The architecture of this mi di computer is 
not the main point of my presentation, so I'll 
say just enough about it to put it in perspec- 
tive. It is three-address, with a 48-bit 
instruction word and a 12-bit data word. 
Instructions and data come from separate mem- 
ories with separate addressing spaces ("Harvard 
architecture"). Arithmetic is generally 24-bit 
twos-complement, with some 12-bit operations 
also available. The minor cycle ("clock" 
interval) is about 10.17 nanoseconds, which is 
the reciprocal of the 98.304 MHz basic frequen- 
cy. One microprogram step requires a major 
cycle consisting of 5 to 12 minor cycles 
according to a 3-bit microprogrammed field. 

Normal execution time for a 24-bit add or 
subtract instruction is 163 nanoseconds, and 
a Boolean instruction requires one minor cycle 
less; instructions of both of these types 
require two major cycles. The time of 163 
nanoseconds is for a memo r v- to-memo r v operation, 
not merely register-to-register, since the main 
data memory (4K 12-bit words) is comprised of 
20-nanosecond-access lKxl ECL memory DIPs (type 
1 041 5A/ 10146). Two copies of all main memory 
words are implemented, in order to avoid the 
penalty of an extra major cycle on each execu- 
tion of one of these instructions. 

The approximate times for some other 24-bit 
three-address operations are: 1.1 microseconds 
for multiplication, 3.5 microseconds for divi- 
sion, and 13 microseconds for the square root 
of a sum. There are both single-word and block- 



WEST COAST COMPUTER FAIRE 



371 



BOX 1579, PALO ALTO CA 94302 



oriented input and output instructions, and an 
external command instruction, with a fully 
asynchronous handshake control phi losophy. 
All instruction sequences are controlled entire- 
ly by stored -microprogram techniques. 

The computer itself, including both data 
and instruction memories, occupies three large 
(418 DIP locations) wirewrap boards mounted in 
aluminum frames, and draws a little more than 
300 watts. It is part of a larger experimental 
signal -processing system for a proprietary real- 
time application, and was never intended to be 
a product in its own right. 



^^CSSDESEP 




Motorola 

type 10181 

ALU 



Test Equipment 



Probably the scale of this machine is 
larger than should be attempted under home lab 
conditions! Nevertheless, the only important 
resources I had which would be difficult to 
match in a we 1 1 -equ i pped homebrew lab were a 
much larger test equipment budget and other 
people to do some of the work. 

By far the two most important pieces of 
test equipment were a Tektronix type 485 porta- 
ble 350-MHz osci Hoscope and a Data I/O model 
VI PROM programmer. The 485 is a marvelous 
scope, but is much higher in performance than 
needed for routine measurements, even in ECL 
work, and is priced out of the reach of most 
hobbyists. I had previously used a Tektronix 
150-MHz type 454 scope for TTL work, and this 
model should be quite adequate for ECL. The 
454 is now several years old, and I am told that 
the going price for a rebuilt one is about 
$1800. Since that is probably still too much, 
unless two or three hobbyists share one, I will 
state a belief that a 50-MHz or 60-MHz scope 
such as a Tektronix type 5**7 or type 453 could 
be used effectively as long as its limitations 
were understood and conservative design prac- 
tices were followed. More on this later. 

As for the PROM programmer, this was needed 
because Miami is, for digital systems work, an 
isolated area far from the bright lights of 
technology. Here in Silicon Valley an enter- 
prising hobbyist should be able to buy prepro- 
grammed ECL PROMs from a distributor or even a 
manufacturer, although it may still be a while 
before they are sold over the counter in every 
shopping center. 



ECL Transmission Lines — Im age and Reality 

Perhaps the single statement which scared 
me most, as I embarked on the development of 
Racal-Mi lgo's ECL number-cruncher, was 

"In high speed systems, the inductance, 
capacitance, and signal delay along 
interconnections cannot be ignored. 
The only practical way of dealing with 
these factors is to treat intercon- 
nections as transmission lines." 
(Reference 2, page VI. This is. a good 
book even if it scares you a little.) 

This statement is of course literally true 
in a technical sense, and yet is enormously 
misleading. It raises vivid mental images of 
huge steel towers marching across the wasteland, 
with long wires dangling from brown insulators 
in catenary curves, as in the portion of Figure 
1 where I pasted up a picture of Grand Coulee 
Dam. Thus, it tends to scare hell out of 
people who are used to treating logic signals 
simply as wires from one point to another, as 
in garden-variety or low-power Schottky TTL. 

However, the real truth is that anv type 
of logic operating at relatively high speeds 
has to be treated with extreme care - not just 
ECL. I have found that there is essentially 
no difference between the care which must be 
taken to design a good Schottky TTL system, with 
respect to interconnection practice, and that 
needed to design a good ECL system — but the 
ECL system will run somewhat more than twice as 
fast, is actually easier to debug and get 
running, springs fewer nasty surprises on you 
during the checkout process, and tends on the 
whole to come closer to treating you right if 
you have treated it right. 

ALL THAT THE TRANSMISSION-LINE PROPERTY 
ACTUALLY MEANS IN PRACTICE IS THAT THE LAST 
THING ATTACHED TO EACH AND EVERY SIGNAL WIRE IN 
AN ECL COMPUTER IS A RESISTOR. If your system 
is entirely wirewrapped, as mine was, on a board 
with good voltage planes (more on that later), 
the characteristic impedance of each wire is 
that of a "wire over ground" and is somewhere 
between 100 and 120 ohms. And, if you wade 
through all the formidable equations in Z's and 
i's in Motorola's various handbooks, one of the 
things you discover is that nothing rea 1 1 v bad 
happens — just a few per cent reflection — if 
there is a fair amount of mismatch between the 
line and the terminating resistor. Because the 
wire over ground on a wirewrap board full of 
other wires is at a varying height anyway, and 
the characteristic impedance depends on that 
height, the characteristic impedance of that 
wire is bound to be "smeared out" and not very 
precise anyway. 

I used two types of resistors: thick-film, 
which come in 16-pin DIPs costing $1.25 to $2.50 



WEST COAST COMPUTER FAIRE 



372 



BOX 1579, PALO ALTO CA 94302 




each depending on quantity, from Beckman, 
Bourns, and other vendors, with 11 individual 
resistors per DIP; and 1/8-watt carbon resis- 
tors, which are so tiny that the leads can be 
wirewrapped around backplane pins. Most of the 
resistors overall were of the thick-film DIP 
variety, and the ratio of ECL IC DIPs to resis- 
tor DIPs was roughly 3:1. 

There are also single-inline (SIP) resistor 
packages, and "active terminators" (Fairchild 
type 10014) with a nonlinear current vs. voltage 
characteristic. In any case, the other end of 
the resistor is terminated to a supply voltage 
(V—.) intermediate between the two usual supply 



ages (V cc 
The "Tfie\ 



and V E£ ) . 



volt _ 

even in equivalent" scheme is a 
second way of terminating a signal line in its 
characteristic impedance. This approach avoids 
having a V-j-r plane at all, and presumably also 
inflicts less noise from the logic on the main 
power supplies in some cases, but dissipates 
about 11 times as much extra power per line 
termination as does the previous method. In the 
Thevenin equivalent scheme, the termination 
point for each signal line is connected to both 
Vqq and Vj:c by resistors, whose values are 
chosen to form a voltage divider (Thevenin net- 
work) such that the voltage drop produces Vyy 
at the termination point. Beckman also makes 
Thevenin network thick-film termination resis- 
tor packs, with k such networks per DIP. 
To be sure, there are other ways of 
approaching signal interconnection besides my 
recipe of terminating each and every signal 
line in its characteristic impedance, if you are 

(a) skilled in linear circuit design, and/or 

(b) a masochist. You can simply not terminate 
the line, and compute out the maximum number of 
inches or tenths of an inch allowable for line 
length under each given set of conditions for 
each signal line. Or you can use "series 
termination," in which there is a resistor in 
between the output stage of your gate or what- 
ever and the input (just one per line, with 
many lines fanning out from one origin) whict- 
is being driven. Possibly, in a big-company 
environment where one is using 17- layer etchec 
circuit boards like those used in the Texas 
Instruments Advanced Scientific Computer, there 
are real advantages to these schemes. In the 
wirewrap world there aren't any, and it is bet- 
ter to terminate each and every signal line in 
a resistor and then relax, since you have 
thereby at one stroke slain most of the big, 



scary goblins of high-speed logic systems — 
crosstalk, ringing and reflections, limits on 
line length, and so forth. 



Some Good News 

And now for some pleasant surprises. 

First, 10K outputs are "open-emitter," 
and may be tied together in almost the same 
way as TTL open-collector outputs, but with 
wire-ORing of outputs viewed as assertive-high 
and wire-ANDing of outputs viewed as assertive- 
low. (I'll delve into the mystique surrounding 
logic polarities before I get done, I promise.) 
However, since the termination resistor has a 
value determined by the characteristic impedance 
of the signal line, one no longer has to recom- 
pute this value every time the number of driving 
outputs or the number of driven inputs changes, 
as one is supposed to when stringing together 
open-col lector TTL. ECL logic isn't slowed 
down much by stringing together open-emitter 
outputs; Motorola estimates 50 picoseconds per 
additional output. When five or more outputs 
are strung together, one may start to see minor 
glitches in the waveform, and so I never tried 
that. Stringing together open-emitter outputs 
turns out to be a valuable technique in ECL, 
for two reasons: It does an extra level of 
logic with essentially no extra logic delay and 
no additional gates, which together with the 
usual two-rail outputs makes ECL SSI much more 
powerful per gate package than TTL SSI. Also, 
it allows in-circuit stimulation of ECL devices 
while your system is running, or trying unsuc- 
cessfully to run, at full speed; any logic 
point can be tied to a logic "1" source with 
impunity in order to change what is happening 
so that you can study it, which is a very 
powerful troubleshooting technique. It is 
normally a no-no in TTL troubleshooting because 
of an unfortunate tendency to melt IC output 
transistors in totem-pole devices. 

Second, since virtually any ECL IC output 
stage will drive a 50-ohm line, it will also 
drive two properly terminated 100-ohm lines 
going to different places, which is very useful 
for instance when driving a lot of memory 
address lines. By way of comparison, there are 
only a few TTL devices — the 74S140 dual NAND 
buffer and the 7^128 quad NOR buffer, for 
istance — which will drive such low-impedance 
es. 

Third, once you have bitten the bullet and 
ninated a signal line in its characteristic 
impedance, you can stop worrying about how long 
that line is, at least as long as it doesn't go 
off the board away from the ground plane. The 
boards I used were roughly a foot wide and 
almost two feet long, and some signal lines were 
longer than two feet, which would be rather 
unacceptable using TTL gates since the usually 



WEST COAST COMPUTER FAIRE 



373 



BOX 1579, PALO ALTO CA 94302 



quoted line-length limit is 10 inches. (For TTL 
3-state buffers it is much longer.) ECL signals 
which go off the board should be differential, 
but even that turns out to be less frightening 
than it sounds, as will be discussed later on. 

Fourth, in ECL the only limitation on 
fanout that matters is that each additional 
input connected to a line adds a few picofarads 
of capacitance, just as additional TTL or MOS 
inputs do in other systems, and as the number 
of inputs increases the rise and fall times 
lengthen a bit. But, instead of a fanout of 10 
as for garden-variety or Schottky TTL, or 21 as 
for low-power Schottky TTL, the fanout limit 
imposed by driving capability is something like 
92, which is as good as infinity for most pur- 
poses. I never really had to test this propo- 
sition out; it usually was not necessary to go 
beyond driving 10 to 12 loads with one output, 
except in special situations like driving memory 
IC address inputs with buffer gates, and even 
there I stayed conservative. 



Voltage Planes and "Positive Earth" 




Figure 2. Top view of Augat board. 



MKHCO CNTWr SOC«£T/'t»M"«>- - 



nfffiPTWh 



ECL logic, even easier-to-use 10K, should 
still be built on a good board for best results. 
"Good" here means that the voltage plane or 
planes occupies at least 50% of the available 
area of the board as it is viewed from above, 
say by Superman with X-ray vision if the board 
is multilayer with internal voltage planes. 
I knew where to get really deluxe boards, from 
a successor company (Kleffman Electronics, 
Minnetonka, Minnesota) to one I once worked 
for, with four complete voltage planes, but up 
until now these boards have not been offered 
for public sale. However, a number of circuit- 
board companies do now offer wirewrap bread- 
boards which look satisfactory for ECL, and in 
some cases state such a design objective. (See 
list in Appendix.) Augat pioneered in this 
area, with a 3-layer board, and boards with a 
similar design philosophy are now also available 
from Excel, Garry, Mupac, and SAE. Interdyne 
has a rather different type of board which also 
looks plausible. These various boards do of 
course cost more than vector board — probably 
$200-$300 for one to accomodate 150 or so DIPs. 
In most cases the DIPs plug directly into the 
holes in the round pins on the board, and no 
additional IC sockets are needed. 

Figures 2 and 3 show an Augat board in top 
view and local cross-section, and Figure k shows 
Mupac 's "Sponge" (TM) board. Reference 3 is a 
useful technical note available from Augat on 
wirewrapping ECL logic using their boards. 

One of the disconcerting facts about ECL 
which seems to baffle each person newly intro- 
duced to the stuff is that Mqq — yes, I djd say 
'CC "~" ' s norma ^y specified as +0.0 volts, or 
"positive earth" as British car aficionados say. 



WEST COAST COMPUTER FAIRE 374 




nsrtTC* rimM»<M 



USE GARDNER DENVER H" 
HO 505?7S AND SIEEVE NO 
607100 FOR WRAPPING AXIAL 
RESISTOR LEADS (NO 26 WIRE) 



Figure 3. Cross-section of Augat board. 




Figure k. Top view of Mupac board. 
BOX 1579, PALO ALTO CA 



J 

94302# 



After all, everyone who has designed TTL or MOS 
systems knows that Vqq has to be +5.0 volts and 
that it is the other voltage supply which is at 
+0.0 volts — why, it is even cal led ground. So 
then, what is this V EE which is specified as 
-5.2 volts? Why isnM: V cc specified as +5.2 
volts and V EE as ground, the way any normal per- 
son would? Certainly the logic doesn't care 
what the dc potential of various circuit points 
is relative to Mother Earth, does it? For that 
matter, why can't ECL run on a 5.0-volt spread 
between the two main supply voltages like TTL 
does? 

Well, it turns out that when Motorola 
originally instituted this now-universal 
+0.0/-5.2 specification, the goal which they 
were in a subtle way trying to achieve was. to 
get their customers to use the best plane on 
the board for V^p rather than for V££ in case 
there was any difference in the extent of the 
planes. The circuit properties of ECL are such 
that system performance is affected much more 
by inadequacy of the Mqq plane than by, say, a 
Vpr plane which only covers part of the board 
and shares the same surface with the V.~ plane. 
To keep the internal workings of ECL 1 6s from 
being confused by electrical transients due to 
their own output stages, most of them (except 
the ones with particularly serendipitous inter- 
nal layout) have 2 or even 3 separate Vqq pins* 
Do not, however, draw the conclusion, that you 
must actually connect these different pins to 
different V cc planes — they don't want you to 
do that, but rather to connect them separately 
to the same Vq^ plane. It makes sense if you 
think about it. 

The Kleffman boards I used had two complete 
ground planes and two other voltage planes, 
having been designed to accommodate a mixture of 
Schottky MSI devices with linears which often 
required a -5.0-volt supply in addition to the 
normal TTL supply voltages. I adapted these 
boards for ECL by using the ground planes for 
V cc (after all, it is. at ground), the TTL Vqq 
plane for V EE , and the -5.0 plane for Vjj. 

By the way, now that the upside-down supply 
voltage polarity issue has been disposed of, 
you will know what I mean when I state that \ljj 
(or the equivalent individual termination points 
if the Theven in-equivalent voltage divider 
scheme is used) is normally specified as -2.0 
volts. 



Motorola 

type 10186 

hex D-flipflop 




Decoupling Capacitors 

In anv high-speed logic system, not just 
ECL, there should be an easy path for high- 
frequency noise to get between the two main 
supply-voltage planes without passing through 
the logic and confusing the hell out of it on 
the way. Lower-frequency noise usually is dealt 
with by connecting a fairly large tantalum 
electrolytic capacitor, say 22 microfarads or 
larger, between the two main supply voltages 
(for ECL, V cc and V EE ) at the point where they 
are brought onto the board, and perhaps at other 
points on the board also. Higher-frequency 
noise is similarly shorted out using little 
ceramic disk capacitors scattered all over the 
board, mingled with the semiconductors. 

Although I have seen printed recommenda- 
tions as mild as using an 0.01 -microfarad disk 
capacitor for every few I Cs, again — as in the 
case of signal-line termination — my recipe 
calls for doing it right everywhere to start 
with and finishing off the goblins for good. 
Here, doing it right means using one 0.1-micro- 
farad disk capacitor (ten times as large) for 
each and every DIP on the board, which thorough- 
ly slays many noise problems otherwise likely to 
be encountered in either ECL or Schottky systems 
AVX (nee Aerovox) is the brand I have used, and 
there are some other vendors also whom I haven't 
personally calibrated. These capacitors are 
physically quite small, and cost in the range 
of 20£ each in modest quantities. 

The reason that I insist (and the people 
who write ECL applications notes for semicon- 
ductor manufacturers also insist) on using disk 
capacitors for this application is that they 
provide the best practical way to get iust a 
capacitor, without at the same time getting an 
inductor and a resistor willy-nilly into the 
bargain. The last thing you need is to have all 
your little decoupling capacitors turn into 
little tank circuits scattered all over your <c 
board. 

The Kleffman boards I used, and some of the 
commercially-available boards such as Augat's 
(see again Figure 3) and Interdyne's, provide 
yet one more weapon in the battle against supply- 
voltage noise. A pair of supply-voltage planes 
are physically separated by only a very small 
thickness — an 0.004" mylar layer in the case 
of the Kleffman boards — so that there is in 
effect a distributed capacitor, sufficiently 
large to severely restrict the magnitude of the 
very-highest-frequency noise (say 150 MHz and 
up), between all points on these planes. 



Motorola 
type 10116 
triple dif- 
ferential 
line receiver 




WEST COAST COMPUTER FAIRE 



375 



BOX 1579, PALO ALTO CA 94302 



Keeping Supply Voltages Smooth 



The ever-present possibility of ac noise 
on the power supply voltages is probably the 
real reason for the general industry concern 
with power-supply-voltage margins in digital 
logic. It isn't hard today to build a fairly 
economical power supply with very tight regu- 
lation — 0.1% to 0.2% according to what one 
seasoned power-supply designer once told me. 
The non-trivial part is getting that precise 
voltage conveyed to each and every DIP. ECL, 
by the way, is normally specified as having a 
+10% supply-voltage tolerance, and one major 
vendor (Fairchild) offers 10K logic with inter- 
nal voltage compensation. In contrast, normal 
commercial -grade TTL is specified to tolerate 
just +5% supply-voltage misbehavior. 

Although I did not find it necessary to do 
this in my system, and I doubt that you will 
either, it is worth noting that an ECL system 
can straightforwardly be designed to present an 
invariant load to the power supply — in con- 
trast to a TTL system, since some TTL gate 
packages may draw as much as 7 times as much 
supply current with all outputs low as with all 
outputs high, and thus full -word -complementing 
operations may result in high-frequency supply- 
voltage hiccups. 

The world's fastest computer, the CRAY-1, 
capable of 138,000,000 floating-point arithmetic 
operations per second on a sustained basis, is 
designed according to this invariant-power- 
supply- load philosophy. (See reference 4, page 
72, and also reference 5.) A number of rather 
extreme measures have been taken in the CRAY-1 
to control various types of noise, for obvious 
reasons. The Thon-memory portions are designed 
largely with simple gates (Fairchild type HCOl) 
having "two-rail" outputs (the output and its 
complement, on separate leads), with both out- 
puts terminated even if both are not used. 
In this configuration, each 11C01 presents an 
invariant load to the power supply. Single-rail 
output devices such as memory ICs use Thevenin 
termination. The 64-bit, 1,048,576-word CRAY-1 
main memory is comprised entirely of IKxl ECL 
memory ICs essentially similar (and actually 
bought to a longer access-time specification) 
to the ones I used. Of course, I only needed 
about 200 of them rather than 66,000 or so. 



Off-Board Interconnection 



Probably one could, at least in some cases, 
get away with running a properly-terminated 
signal line right off one board onto another if 
all of the precautions already discussed were 
taken. I never tried it. In the first place, 
one can't assume that the voltage-plane poten- 
tials on one board exactly match those on some 
other board the way they're supposed to, even 
if one has used 0.1 -microfarad capacitors like 



popcorn as I have recommended. In the second 
place, there has to be some way to keep the 
signal lines at the same characteristic impe- 
dance, without discontinuities, as they leap 
through space between boards — and, worse yet, 
to keep them shielded from various forms of 
electromagnetic interference (such as each 
other) now that they are no longer safely close 
to a ground or other voltage plane. 

Again, there is a simple, seemingly dras- 
tic, very effective way of solving the problem 
which pretty well decimates the goblins. As I 
just stated in the previous section, many ECL 
gates have two-rail outputs. (This may be an 
unfamiliar idea to TTL chauvinists; except for 
flipflops, one mux configuration, and a rather 
new and little-known two- rail buffer called the 
74265, TTL devices don't usually offer this 
feature.) ECL gate circuit parameters are such 
that any two-rail gate can be used to drive a 
differential line, with all of the implied 
advantages of common-mode-noise rejection and 
insensitivity to temperature and dc-voltage 
discrepancies between different boards. Since 
such a line may in principle be as long as a few 
hundred feet before purely circuit-design- 
parameter alligators start snapping at one, 
there is no abrupt length limit of concern to 
a hobbyist. Of course, remember that a 
nanosecond is approximately a "light foot," and 
that electrons in a wire only travel about 2/3 
as fast as light travels. Thus you may observe, 
at least if you can borrow a 485 scope for a 
while, that each 6" to 8" of signal line 
requires another nanosecond for the signal to 
traverse it, for differential as well as for 
single-ended signals. I was at one point rather 
startled to realize that some 15" signal lines 
were actually a bigger delay factor in one data 
path than a whole row of 2 -nanosecond buffers 
with short signal lines coming and going. 

At the other end of the differential line, 
on the other board, one uses a differential 
receiver element with a resistor between the two 
differential line ends. These elements come in 
four flavors: three types of triple elements 
with two-rail outputs (type 10116 for plain 
vanilla, 10114 for hysteresis, and 10216 for 
extra blazing speed), and one (type 10115) with 
quadruple elements with single-rail outputs. 

For more details see reference 6, which 
also describes (on page 9) how to turn one of 
the triple two-rail devices into a Schmitt 
trigger circuit. Two cautions: First, any 
unused elements in a differential receiver DIP 
should be "strapped" to force their outputs into 
one logic state or the other, as otherwise they 
will hover right at the logic threshold point 
and the on-chip bias networks will get screwed 
up and confuse the elements which are being used. 
Also, we found that the resistor values sugges- 
ted for use with the receiver elements by refer- 
ence 6 were not the right ones for our inter- 
connection system, and wound up using resistors 



WEST COAST COMPUTER FAIRE 



376 



BOX 1579, PALO ALTO CA 94302 



( 

■ with values close to 300 ohms for all three 
I resistors shown in Figure 3 of that reference. 

I r,h 



I 



Cabling 

There are probably other acceptable physi- 
cal means for getting these differential signals 
from one board to another, but the one I recom- 
mend is flat ribbon cable, available in various 
forms from 3M, Augat, Elco, Spectra-Strip, and 
probably other companies. Specifically, what I 
have used is 40-wire 3M cable, which is physi- 
cally surprisingly small. Many such cables , 
stack neatly in a small thickness, and fairly 
abrupt turns and at least some limited hinge 
action are possible. 3M supplies little press- 
on connectors, and a tool to crunch them into 
place, one at each end of the cable. 

The electrical shielding properties of this 
cable are excellent if one does not get greedy 
about how many logic signals pass through a 
single cable. There should be one or more 
ground wires at both edges of the cable, and 
alternating signal and ground wires within the 
cable. This means that one can only transmit 9 
differential logic signals in one 40-wire cable, 
since doing just that according to the recipe 
demands a minimum of 37 wires. The cable format 
is, of course, 



G G S, G S] G S 2 G S 2 G 



G Sq G Sq G G G 



When one stacks several such cables, the 
signal -ground-signal bar-ground philosophy should 
also prevail along the "z-axis," that is, in the 
direction perpendicular to the plane of each 
cable as one goes through successive cables. 
Thus, in the cable immediately above the one 
whose format has just been typed out, there 
would be three edge G's on the left and two on 
the right, and likewise In the one just below, 
and so forth, so that the signal wires are 
staggered. 



Keeping it all Cool 



If one firmly grasps a lKxl ECL memory IC 
(type 10415A/10146) after the computer has been 
running for a few minutes, one can literally get 
second-degree burns. This IC type dissipates 
as much as 3/4 watt, and we measured ceramic 
DIP case temperatures as high as 60° C. Up-down 
counters (type 10136) and hex D-flipflops (type 
10186) also run pretty hot, although not quite 
that hot. 256x4 PROMs (type 10149;, oddly 
enough, run much cooler - about 45° C. The 
average power dissipation for all ICs in the 
entire mi di computer, including SSI and MSI types 
as well as LSI types such as the 10149 and 
10415A, is about 1/3 watt. Of course, probably 
about 1/10 of that is dissipated as heat not 




within the ICs themselves but within the 
termination resistor OIPs. 

Despite all that, we encountered few if any 
problems attributable to heat. The ICs simply 
sat out in the open, on large boards which were 
mounted vertically like pages of a book on a 
central vertical post, free to flop back and 
forth through a small arc since they were 
interconnected by ribbon cable as just described 
Although we had a forced-air-cooling scheme 
figured out in case we needed it, we never had 
to use it, and relied purely on convection and 
radiant cooling. I also found that ECL ICs, 
once installed and running properly, very rarely 
died of natural causes, at least as compared 
with TTL ICs in similar applications. Probably 
the very high percentage (about 78) of voltage 
plane on our boards helped a lot to conduct the 
heat efficiently away from the ICs. 

An ECL system installed within a closed 
metal cabinet, particularly if the boards are 
mounted horizontally, should doubtless be cooled 
by some more active technique, such as forced 
air. As for what the big-machine people do, 
Control Data's big computers are Freon-cooled, 
with lots of little pipes running along chassis 
structural members. The CRAY-1 uses not only 
Freon cooling but heavy-gage heat-conductive 
copper sheets. (And, even though the CRAY-1 
mainframe itself actually is physically small 
enough to fit into your spare bedroom, the 
auxiliary cooling apparatus might drive you out 
of the rest of the house. Oh, well, you didn't 
need quite that much speed anyway.) Some large 
IBM computers use chilled-water cooling. You 
may now note a delicate allusion to each of 
these cooling techniques in Figure 1. Someday, 
an ingenious hobbyist trying to cool a really 
massive homebrew ECL system may wind up using 
the refrigeration unit from a used Sears 
Co Id spot, but open-rack convection cooling or 
forced air should do the trick for most systems. 

There were a few Saturdays when we worked 
on the Racal-Milgo system, and Plant Engineering 
forgot to turn on the airconditioning until the 
middle of the morning, and in Miami during the 
summer an unventilated room is bad news for 
people as well as for computers. The system 
didn't run too well on those days until the 
airconditioning had been turned on long enough 
to pull the temperature in the lab down below, 
say, 90° F. However, we really had no reason 
to believe that it was the ECL which was giving 



WEST COAST COMPUTER FAIRE 



377 



BOX 1579, PALO ALTO CA 94302 



problems. We were using a semi -homebrew 1146100- 
based, PDP-8-compatible microcomputer to control 
the larger ECL machine, which is also a plausi- 
ble technique for a hobbyist who already has 
one or two other microcomputers. Most of the 
system reliability problems which we were actu- 
ally able to pin down turned out to be trouble 
with the 2 102 -type MOS memory ICs used with the 
IM6100, and the specific symptom of trouble we 
had on those hot Saturday mornings was usually 
inability to load the ECL mid i computer instruc- 
tion memory from the IM6100. Nevertheless, if 
you do choose to rely on open-rack convection 
cooling, your ECL homebrew number-cruncher may 
run a bit better if you keep your spare bedroom 
at a temperature which you also find agreeable. 



If Your Scope Isn't F ast Enough 



a switching hazard in the logic you designed to 
control that clock line. 



ECL 10K output stages have a nominal logic 
swing from about -0.900 volts (considered to be 
a "logic 1" or "high") down to about -1.750 
volts ("logic 0" or "low"), with the logic 
threshold being around -1.290 volts. (Aha! 
Now you know what these negative numbers really 
mean!) If you have followed the interconnection 
recipe of the preceding paragraphs faithfully, 
you should see picture-book square waveforms 
everywhere, although they do look just a bit 
cleaner at the end of a signal line close to the 
termination resistor than at points along the 
way. Even with a 485 scope, which shows every 
little wiggle, the ECL waveforms I observed 
looked very clean compared to the grassy ones 
sometimes seen in high-speed TTL systems. 

If you must use a slower scope for money- 
type reasons, you will of course observe even 
cleaner waveforms (which aren't exactly real!) 
with slightly rounded corners, which may not 
deceive you very much about anything essential 
as long as you remember why it is that they 
look so clean. The principal danger is that, 
now and then, there will be a glitch on some 
signal line which is insufficiently wide to show 
up on the scope, or at least to look to you as 
If it is of sufficient magnitude to reach the 
logic threshold — when, all the while, here Is 
an up-down counter (type 10136) or hex D-f lip- 
flop (type 10186) or other edge-sensifelvtf 
device whose clock input is connected to that 
signal line, which sure is acting as if it Is 
getting an edge at just about that time. 
Probably it is, and you just can't see it 
because your scope has smoothed it out for you. 
Realizing that such must be the case, you have 
your choice of (a) getting hold of a more 
expensive scope, or (b) "reading between the 
lines" of what your humbler scope is telling 
you, terminating that clock line better, and 
seeing if the problem doesn't then go away. Or 
perhaps the clock-line glitch is really due to 




Motorola 
type 10136 
up-down counter 



Product Families 

To oversimplify things a bit in a manner 
meaningful to a ones-and-zeroes type like 
myself, ECL is one type of "current-mode logic." 
The state of an ECL gate is determined by which 
of the two output legs the main current is 
being steered through, and the resulting 
voltages at the output points are interesting 
side effects but are not the basic switching 
phenomenon . 

In TTL and MOS, on the other hand, the 
output voltage states are where the action is, 
and the currents tag along after the voltages 
as interesting (and often inconvenient) side 
effects. In Schottky TTL logic, for instance, 
the voltage states you actually see on a scope 
are about +0.2 volts for a "logic 0" and +4.1 
volts for a "logic 1." Incidentally, since 
Schottky TTL rise times are probably a bit 
faster than the 3.5 to 4-nanosecond times 
characteristic of ECL 10K, you may notice that 
the "voltage slew rate" or whatever that parame- 
ter should be called is many times greater for 
Schottky TTL, and is in fact roughly equal to 
the corresponding rate for the very fastest 
ECL families. 

There are lots of custom families made by 
IC manufacturers for direct sale to large compu- 
ter companies which fall into the general 
category of "current -mode logic." However, most 
these are not available for sale to the general 
public. There are six product families, more 
specifically considered to be ECL, which are 
sold to all comers: 

o ECL I, contemporary with DTL and now 
obsolete and not used in new designs. 

o ECL II, contemporary with and somewhat 
philosophically akin to H-series TTL. 

o ECL III, extremely fast, but with only 
a modest selection of SSI and MSI types 

o ECL 10K, the only one which I am claim- 
ing is well -adapted to homebrew usage. 

o ECL 95K, philosophically much like 10K, 
but a marketplace also-ran. 

o ECL 100K, the fastest one of all. 



WEST COAST COMPUTER FAIRE 



378 



BOX 1579, PALO ALTO CA 94302 



The first four of the above families were intro- 
duced by Motorola, and the last two by Fairchild. 
Fairchild, Motorola, and Plessey also have 
various other ECL products which are not really 
organized into families — for instance, Fair- 
child's 11C01 OR/NOR gate (used in the CRAY-1), 
which is an lOOK-technology device offered in a 
non-lOOK package. The last four families are, 
or can be made to be, electrically compatible 
so that with some care devices may be mixed in 
a system. 

Except for ECL 10K, the second -sou re ing 
picture isn't too bright. ECL III is available 
from Motorola (which of course calls it MECL 
III) and also from Plessey (which calls it PECL 
III). Signetics, or its French affiliate which 
is also owned by Philips of the Netherlands, 
is moving towards becoming a second source for 
ECL 100K. 

ECL 10K, however, has a large number of 
viable second sources. Besides Motorola, Fair- 
child, Plessey, and Signetics make virtually 
the complete line, Nippon Electric makes some 
of it, and Fujitsu, Monolithic Memories, and 
Texas Instruments make lOK-compatible bipolar 
memories. This list covers only those firms 
which offer their wares in the United States 
today through distributors. There are other 
firms which sell only in Japan or in Europe, 
where ECL 10K probably has a larger share of the 
total digital logic market than it does here. 
It was a British computer manufacturer, 
International Computers Ltd., which originally 
sponsored Motorola's development of ECL 10K. 



Mundane Details 



As far as one can tell by scanning current 
Fairchild and Motorola OEM price lists, ECL 10K 
ICs in plastic packages tend to cost about l£ 
times as much as the closest equivalent part in 
low-power Schottky TTL. There are certain items 
which don't follow that rule and cost relatively 
more, such as the type 10136 up-down counter. 
However, most ECL 10K gate parts in plastic 
today cost well under a dollar even in unit 
quantities. 

Some of the ECL 10K LSI parts are still 
up in the $10 to $30 range, such as the Motorola 
10800 which is a rough equivalent to an AMD 
2901 at least when equipped with external RAM. 
The cure for that situation is of course second- 
sourcing, which is happening but takes time. 
Sooner or later Fairchild will probably be 
making the 10800, and then the price will drop. 

Almost all ECL 10K parts are now available 
in full military-temperature-range versions, in 
case you are taking your homebrew system with 
you to Montana this winter or to Phoenix next 
summer. 



The Even Faster Stuff 

A. hobbyist willing to hand-solder, rather 
than wirewrap, all interconnections to that part 
of his system might with due care succeed in 
making some limited use of ECL III and/or ECL 
100K. (A few turns of wrapped wire, it turns 
out, functions all too well as an inductor when 
hit with the 900 or 700-nanosecond edges 
respectively characteristic of those families, 
and the resulting impedance discontinuities 
make reflections.) The technology required to 
build a system of any size using one of these 
families, however, remains pretty difficult at 
the present time. 

There are, however, two ECL III devices of 
some interest to a hobbyist: type 1648, which 
is called a "voltage-controlled oscillator," and 
type 1658, which is called a "voltage-controlled 
multivibrator." There is no announced ECL 10K 
product matching either of these descriptions, 
and they are useful. I used a 1648 once in an 
otherwise all-TTL system to provide a hand- 
adjustable system clock source for testing clock 
margin - that is, how fast the system could be 
made to go before it failed. (In this case, I 
didn't personally do the nitty-gritty.) It 
worked fine, after being well shielded. 

Those ECL 10K parts having type numbers of 
form 102XX (106XX in military temperature) form 
a subfamily, with appreciably different proper- 
ties. Hand-soldered connections are also 
advisable when using any of these. They are 
quite a lot faster than their normal ECL 10K 
equivalents, and consume essentially no more 
power, so they sound like a super-good deal. 
Alas, this greater speed has been obtained by 
cutting very short the leisurely rise and fall 
times deliberately designed into normal ECL 10K. 
To oversimplify a bit, normal ECL 10K rise and 
fall times are perhaps 3.5 to 4 nanoseconds — 
much longer than the nominal logic delay of 2 
nanoseconds or so; whereas 102XX rise and fall 
times are probably not much different from the 
logic delay which I have observed to be about 
1.25 nanoseconds. Reluctantly, I concluded that 
system noise problems would be minimized by 
restricting the use of 102XX parts to those 
situations where that last ounce of speed is 
really required, for instance in the clock 
generation circuits. The only sure-enough 
example of proven crosstalk trouble in the Racal- 
Milgo mi di computer was due to an unnecessarily 
long wire being driven by a type 10212 buffer, 
and was eliminated by relocating a few ICs so 
that that buffer was closer to its load. 



ii.y.uuK 

_#i 7L,j,n,n,rT. 




Motorola 
type 1021 ? 
NOR buffer 



WEST COAST COMPUTER FAIRE 



379 



BOX 1579, PALO ALTO CA 94302 



One other simple and plausible usage of 
ECL III or ECL 100K is to build high-speed, 
fixed -frequency oscillators. Two type 1688 
OR/NOR gates on the same IC in series make a 
dandy oscillator (see Figure 5) » which we 
observed to generate various frequencies 
from 110 MHz to 170 MHz depending on which 
particular MECL or PECL sample we were using. 
Probably an 11C01 would produce a somewhat 
higher frequency. Don't try to build this 
type of oscillator with a single gate — it 
won't even oscillate* but will just hang in 
there with its output at about the threshold 
voltage. If swapping ICs around doesn't get 
you the frequency you are shooting for, try 
hanging very small capacitors on gate outputs 
to slow them down. Caution: with ECL 1 1 1 at 
least, the speed of oscillation may depend on 
the ambient temperature. 



Logic Drawing Conventions 



If one wishes to think "assertive-high" — 
that is, the more positive of the two output 
voltage states represents a "1" and the more 
negative state represents a "0" — then it 
follows that in TTL logic the simplest and most 
natural gate structure is the NAND gate, whereas 
in ECL logic it turns out to be an OR/NOR gate. 
It is fairly clearcut in both cases what is 
really the simplest circuit for the silicon 
people to bui Id. 

Since the ORlng together of minterms seems 
to be more natural to human psychology than the 
ANDing together of maxterms, part of learning 
to use ECL consists of learning to use "mixed- 
logic" conventions in some form. These conven- 
tions allow you to think of — and draw — a 
given physical gate circuit as performing either 
an OR function or an AND function, and then to 
consider as a separate issue the assert iveness 
of that gate's input and output signals. 

Soaking up the mixed-logic viewpoint should 
also be part of learning to design with TTL, but 
unfortunately it isn't always. In fact, many 
erudite polemics have been written defending 
older and less general viewpoints, which I feel 
are now best understood as evolutionary way 
stations on the way to the full-blown mixed- 
logic viewpoint. One of these older viewpoints 
is the one which results in the dozens of busy 
little black and white triangular flag symbols 
on the inputs and outputs of ECL 10K parts as 
drawn on Motorola's data sheets. 

I can only say that, once I forced myself 
to give up the particular Bronze-Age viewpoint 
I formerly had and learned to use mixed-logic 
conventions, within a week I was really wonder- 
ing why I had ever used anything else. If one 
uses an additional logic symbol to denote j 
"psychological inversion," implying that although) Fi 



the elect rical po larity of some signal (say, for 
example, BANANAS) hasn't changed one's perception 
of its meaning or "psychological polarity" has 
changed (in the example, to YES WE HAVE NO BANA- 
NAS), then logic drawings can be made almost as 
semantical ly precise and self-checking as logic 
equations. This is not an academic exercise — 
it helps you spot real mistakes before you wire 
it up wrong and waste a lot of time trying to 
figure out why it isn't working. 

Reference 7 is an eminently sane paper on 
this whole dogma-ridden subject; I have relied 
on it for several years for guidance as to logic 
drawing conventions. Recently there have been 
more papers in the same vein. I have just one 
minor quibble with reference 7; the symbol 
suggested there for psychological inversion, a 
small line drawn across the signal line at right 
angles, tends not to show up too well on blue- 
line copies. A little solid triangle or arrow- 
head drawn next to the signal line shows up much 
better, and there is a hole of the right shape 
on most templates. 

Figure 6 shows the same physical gate 
element, one of the two-input elements from a 
type 10105 triple 0R/N0R gate part, drawn first 
with assertive-high inputs as an 0R/N0R gate and 
second with assertive-low inputs as an AND/NAND 
gate. You get the idea. The pins are all still 
in the same relative positions. If one uses the 
standard "inversion bubbles" correctly, one 
doesn't really need the additional symbols such 
as triangular flags - they in fact introduce one 
too many degrees of freedom and just confuse the 
issue. I suggest the proper use of mixed-logic 
conventions as a sort of "software adjunct" to 
the rest of my homebrew ECL recipe, 



OUTPUT 




Figure 5. Fixed-frequency osci 11 ator. 






gure 6. Two representations of the same gate. 



WEST COAST COMPUTER FAIRE 



380 



BOX 1579, PALO ALTO CA 94302 



Finale 




I have used references sparingly, because 
many of them tend to give ECL system design an 
air of awesome complexity and desperate peril, 
and this is exactly what I am trying to tell 
you ain't necessarily so. However, if you get 
seriously into ECL you probably will want to 
get hold of Motorola's whole set of application 
notes pertaining to ECL 1 OK, and also some 
worth-while material published by Fairchild and 
Signetics. Good luck, and may the Force be 
with you. # 



Motorola 

type 10105 

triple OR/NOR gate 



There are several people who were at Racal- 
Milgo when I was, without whose efforts the 
number-cruncher would never have happened and I 
wouldn't have been able to tell you about it. 
Two particularly deserve mention: Dick Joerger 
is the "sharp technician" referred to in the 
text of this paper, and built most of the 
machine with his own two hands. Rick Johnston 
did the preliminary design of the control sec- 
tion and improved it greatly from what I had 
originally planned; he made it a pipelined, 
overlapped, stored-microprogram machine with a 
self -restarting main timing circuit. 

There are also three electronics industry 
veterans at other companies with whom I have 
had numerous conversations, usually by WATS 
line, and without whose wise opinions I would 
not have had the temerity to try to build the 
machine out of ECL. They are: Stan Bruederle 
of Signetics, Rob Walker of Intel (at that time 
still at Fairchild), and Norm Winningstad of 
Floating Point Systems. Everything each of then 
told me about ECL turned out to be absolutely 
correct, and much of it appears in the text of 
this paper. If the paper is wildly off -base on 
any topic, it's because I didn't get their 
complete message. 



Ad Hominem 



Chuck Hastings has spent two decades in 
the computer mainframe business, mostly as an 
architect/designer, and currently works for 
Itek Applied Technology in Sunnyvale, CA. He 
has previously worked full-time at Racal-Milgo, 
two subsidiaries of United Telecom, Control 
Data, Honeywell, and TRW, and has been a 
consultant to various big and little companies 



in four states. Besides the computer described 
in this presentation, he earlier managed the 
technical end of a hardware project in which the 
Control Data 3300 virtual -memory computer archi- 
tecture was successfully emulated using TTL MSI. 
He has a BA in physics and math from Grinnell 
College, an MA in math from UCLA, and many 
additional EE and computer courses at the Uni- 
versity of Minnesota, and has embarked on the 
MBA program at the University of Santa Clara. 
He has two patents in electro-optic mass 
memories, belongs to ACM and IEEE, and has 
five children and three station wagons. 



References 

1. "Notes on Microcomputer Music," Marc LeBrun, 
pages 128-130, The First W est Coast 
Computer Fa ire Conference Proceedings . 
Box 1579, Palo Alto, CA 94302; V1977 — S- 
John Reykjalin, private communication; 1/19$. 

The ECL Handbook . Fairchild Semiconductor, 
464 Ellis Street, Mountain View, CA 94042; 
7/1974. 

"Packaging High Speed ECL Integrated 
Circuits," Leonard A. Doucet, Augat Inc., 
33 Perry Avenue, At tleboro, MA 02703; 
about 197^. 

"The CRAY-1 Computer System," Richard M. 
Russell, pages 63-72, Communications of 
the ACM : 1/1978. 

"CRAY-1; The Smaller Supercomputer," 
New Products department on page 53, 
Computer (IEEE Computer Society magazine); 
3/1976. 

Interfacing with MECL 10.000 Integrated 
Circuits . Application Note AN-720, Motorola 
Semiconductor Products, Inc., Box 20912, 
Phoenix, AZ 85036; 1974. Author of this 
note is Bill Blood. 

7. "Mixed Logic; A Tool for Design Simplifi- 
cation," Paul M. Kintner, pages 55-60, 
Computer Design : 8/1971. 



2. 



3. 



4. 



5. 



6. 



APPENDIX 



About this List 



I promised you a list of vendors of various 
items which you will need. Here they are, with 
names and addresses, in alphabetical order by 
topic. I don't, of course, imply any warranty 



WEST COAST COMPUTER FAIRE 



381 



BOX 1579, PALO ALTO CA 94302 



that you will find them utterly perfect about 
everything, simply by listing them here, but 
I have had positive dealings with most of them. 



ECL Logic and Memories 

Fairchild Semiconductor 
464 Ellis Street 
Mountain View, CA 94042 

Motorola Semiconductor Products, Inc. 
Box 20912, Phoenix, AZ 85036 

Plessey Semiconductors 

1674G McGaw Avenue 

Santa Ana, CA 92715 

(Head office: Swindon, U.K.) 

Signetics Corporation 
811 East Arques Avenue 
Sunnyvale, CA 94086 

(No direct information) 
Nippon Electric Company, Japan 



ECL Memories Only 

Fujitsu America Inc. 

2945 Oakmead Village Court 

Santa Clara, CA 95051 

Monolithic Memories Inc. 
1165 East Arques Avenue 
Sunnyvale, CA 94086 

Texas instruments Inc. 
P. 0. Box 5012, MS 308 
Dallas, Texas 75222 



ECL-Grade Logic Breadboards 

Augat Inc. 

33 Perry Avenue 

Attleboro, MA 02703 

Excel Products Company, Inc. 
401 Joyce Ki lmer Avenue 
New Brunswick, NJ 08903 

Garry Manufacturing Company 

1010 Jersey Avenue 

New Brunswick, NJ 08902 

Interdyne, Inc. 
14761 Califa Street 
Van Nuys, CA 91^1 1 

Mupac Corporation 
646 Summer Street 
Brockton, MA 02402 



Stanford Applied Engineering Inc. (SAE) 
340 Martin Avenue 
Santa Clara, CA 95050 



Flat Ribbon Cable 

Augat (see above) 

3M Company, Industrial Electrical Products 
3M Center, St. Paul, MN 55101 

Elco Corporation 

2250 Park Place 

El Segundo, CA 90245 

Eltra Spectra-Strip 
7100 Lampson Avenue 
Garden Grove, CA 92642 

Ceramic Disk Capacitors 

AVX Ceramics 

P. 0. Box 867 

Myrtle Beach, SC 29577 

Centre Engineering 

2820 East College Avenue 

State College, PA 16801 

Resistor Packages 

Beckman Instruments, Inc. 
2500 Harbor Boulevard 
Fullerton, CA 92634 

Bourns, Inc. 

1200 Columbia Avenue 

Riverside, CA 92507 

ILC Data Device Corporation 
Airport International Plaza 
Bohemia, Long Island, NY 11716 



Wirewrap Eguipment 

Gardner Denver Company 
1333 Fulton Street 
Grand Haven, Ml 49417 

OK Machine and Tool Corporation 
3455 Conner Street 
Bronx, NY 10475 




WEST COAST COMPUTER FAIRE 



382 



BOX 1579, PALO ALTO CA 94302 



N-CHANNEL PACE 16-BIT MICROPROCESSOR SVSTFM 



Ed Schoell, B Tech (Electronics). 



VK3BDS 



1 . ABSTRACT 

This paper describes a microcomputer system based 
on the National Semiconductor Pace (INS8900) 16-bit 
microprocessor. This system has been developed by 
the author in Australia to fill the gap between 
evaluation kits offered by microprocessor chip 
manufacturers and the full sized microcomputers 
available from USA sources. 

The use of a 16-bit processor has a number of 
advantages for hobby applications, especially where 
any maths work is contemplated, and at $19.95 for 
the CPU chip the provision of a powerful instruction 
set and minicomputer architecture make it very 
attractive. 

The system described consists of a family of 
boards 6.25 by 8.5 inches with a single sided 85- 
way edge connector. These boards plug into a 
mother board in a case and power supply 
combination box to form a microcomputer. However 
the CPU card can be run on its own by connecting 
it to a power supply and TTY or terminal thus 
providing a low cost introduction to the system 
without limiting later expansion as is usually the 
case when a person tries to expland an 'evaluation 
kit' . 



Ed Schoell, Box 30., Boronia 3155., Victoria, Australia. 



The CPU card, a multi-purpose interface card and 
an 80x24/28 video card are completed and a 16Kxl6 
memory card and a floppy disc interface cards are 
planned in the near future. 

2. INTRODUCTION: 

By way of background, the hobby microcomputer 
scene in Australia has been dominated by the two 
hobby magazines, Electronics Australia and 
Electronics Today International. Both these 
magazines have published projects based on 
evaluation kits from the microprocessor chip 
manufacturers. Both have published simple VDU 
TV-typewriter systems, (of which quite a few 
hundred have been constructed) and both have 
reviewed offerings from importers of USA 
originating systems from Altair etc. 

Computer stores have opened in the major cities 
and a number of active computer clubs have 
started with membership in the 100 to 200. 

One popular project has been a SC/MP based system 
call "MINISCAMP" using a switch and LED simple 
control panel to enter data into RAM and execute a 
program. Some 800 odd systems have been built of 
these and it has proved an attractive learning 
tool priced under $100. 




Fig. 1. PACE (INS8900) INTERNAL ARCHITECTURE 

Data and addresses are connected to the outside world by the 16-bit data bus at the too 
right of the diagram.Stobes NADS, IDS ,0DS control bus activity. 



WEST COAST COMPUTER FAIRE 



383 



BOX 1579, PALO ALTO CA 94302 



Because of the cost and difficulty of importing USA 
equipment into Australia and the lack of locally 
designed equivalents, about two years ago design 
was started on a system using the SC/MP microproces- 
sor as the controller for an intelligent VDU. The 
original intention was just to build up a system for 
personal use, but discussion with a lot of 
interested other people convinced one of the need to 
design reproductable printed circuit boards and to 
offer these as kits for others to build as well. 

The video system was prototyped first as a wire- 
wrapped conglomeration across : the bench, hooked up 
to a SC/MP low cost development system from 
National and this worked very 1 well. 

About this time National announced a price 
reduction on the PACE cpu chip down to $25 for a 3 
microsecond version of the P-channel part, and it 
was' tbp great a temptation to resist putting a 
much more powerful micro chip into the system and 
releasing it as a microcomputer with a video front 
panel (although still usable as a terminal with 
other systems). . ..-■- 

Having made this decision the long hard ta»k of 
detailed interface design, CPU design and PCB 
layout began and occupied some six months of spare 
.time activity. The first results have been 
gratifying as we now have a unique combination of a 
16-bit CPU with a powerful debug program and easy 
expandability, a multichannel interface card able to 
drive a combination of parallel and serial I/O 
devices and a video card with 4K of character 
storage in a variety of formats, plus a flexible 
graphics system giving 160 by 140 points able to be 
mixed with upper or lower case text. Let us now 
look at the design in more detail, starting with 
the CPU card. 

As mentioned before the change to Pace was made 
when National released the $25 3 microsecond chip. 
Since then a $19.95 two microsecond N-channel 
chip the INS8900 has been released and this was 
used for the released printed circuit boards. It 
offers a number of advantages, in that the clock 
system is now a single CMOS line and bus inter- 
facing can now be -done. at low-power schottky levels 
via the 8-bit wide INS8208(DP8304) transceivers. 

3. CPU DESCRIPTION 

On the CPU board a crystal oscillator at 11 MHZ 
provides timing for the CPU after division and this 
clock is also buffered off the card for use by the 
video system for timing the display and by the 
interface card for the programmable baud rate 
generators. The Pace internal architecture is very 
minicomputer like (actually rather similar to the 
Data-General NOVA). It has four 16-bit 
accumulators, all of which can be used in memory 
reference instructions, although accumulator zero 
is used as the prime data accumulator, because of 
the availability of branch on condition 
instructions which can test data or individual bits 
of this accumulator as well, a group of logical 
memory reference instructions use this accumulator 
(in these respects the pace instruction set is a 
considerable enhancement of the NOVA's). 

Accumulator 2 and 3 , as well as being able to be 

used as destinations and sources for 16-bit 

arithmetic operations, can also be used as 16-bit 

index registers. All memory reference instructions 

(with the exception of the branch on condition which 

is PC-relative) can use either of these for 

indexing, alternatively, memory reference instructions 

can go PC relative or into the first 256 words as 

a base page. Indirect instructions are also 

provided. 

Figure 1 gives the internal structure of the CPU. 

WEST COAST COMPUTER FAIRE 




The 16-bit I/O bus is provided to couple the PACE 
to the outside world, and data in and out as well 
as addresses are placed on the bus. Control strobe 
lines (NADS, IDS, ODS) indicate what is happening 
on the bus, and in the case of this CPU card, are 
used to latch address data into a pair of 
DP8212 8-bit latches giving a latch address bus 
pined out from pins 20 to 35 on the rtard edge. The 
buffered data bus is available on the card edge 
pins 40 through 55 and is turned around by the 
IDS (input data strobe) signal. An additional pair 
of buffers on the card buffers the on card memory 
onto the system bus when memory in the range is 
decoded. 

A variety of memory is provided on this card. 
Firstly, 6 PROM sockets for 2708 (or 2716) 
PROMS give 3K (or 6K) by 16 of firmware storage. 
One pair is used for the DEBUG program described 
later. The PROMS are" normally located in high 
memory, but two pairs can be moved to location 
zero (the initialise address). As well, optional 
automatic power up vectoring to the monitor is 
switch selectable. 

Because the DEBUG is out of the way of low memory 
RAM can be located there, with no restrictions 
at all. In fact address space for the bottom 52K 
(xl6) is unassigned, and slots above this are 
provided for VIDEO RAM (4K),Disc Operating System, 
standard peripherals and the ROM mentioned above. 

A block of 256 words (xl6) of RAM is located at 
the very top of memory. Some of the lower half 
of this is used by the monitor, but most is 
available for users. It resides at the split 
base page if this is enabled. 

A second block of 4K RAM can be provided by 
plugging in 16, 4Kxl static RAMs . This can be 
allocated anywhere in memory by DIP switch, and 
provides enough capacity on the single card to run 
the editor, and assembler, as well as a TINY 
BASIC compiler planned for release later this year. 

This card can be used stand-alone, and TTY/20mA/ 
RS232C interface allows for bit-serial 
communications with ASCII and BAUDOT devices at 50, 
.110.,.. 300. and .1200. BAUD.. The. flags (Fl3,Fl4/and 
JC15 are used for this simple I/O. 

A 16-pin DIP connector is also provided on this card 
to convert to a range of low-cost microprocessor 
peripherals developed in Australia on a ribbon 
cable interface. These include PROM programmers 
for the 2708Q and 5204Q, LED displays, and 
calculator-style control panels. 

4. Multi-Interface Card: 

To expand the system over the "flag-waving" serial 
1/0 on the CPU card, a second card adds multiple 
serial and parallel interfaces. One (or optionally 
2) USARTS are provided, giving synchronous or 
asynchronous serial I/O at programmable, split or 
externally controlled baud rates. A three-channel 
16-bit interval timer chip is used for baud rate 
generation from the crystal clock, so precise 
clocks can be generated for all standard rates as 
well as the odd BAUDOT ones used by radio hams etc. 
Channels not used for baud rate clocks can be used 
for real time clock or external counter 
applications in binary or decimal. 

Serial I/O is at TTL, 20 mA or RS232C with modem 
control lines provided. 

To provide low cost backup storage, it is hard to 
beat an audio cassette recorder, so an interface 
in BYTE/KANSAS CITY format is provided, along with 
remote control for two tape recorders, and a 
higher speed option as well. A high speed 
synchronous port is also provided to convert to a 
low cost Australian developed 3M cartridge drive 



384 



BOX 1579, PALO ALTO CA 94302 



system. Various parallel interfaces are provided 
to allow input from a high speed paper tape reader 
and an output for a Centronics or similar style 
printer. Strobe and control polarities are link 
programmed to allow for the usual odd collection 
of peripherals hobbyists and schools accumulate! 

Rather than provide seperate cards for such a 
range of I/O devices, it was easier and much cheap- 
er to combine them all onto one card. In this 
way, address decoding, bus buffering and I/O 
control flags are shared rather than being 
duplicated as most minicomputers do it, and each 
interface costs only very few dollars. 

5. VIDEO INTERFACE 

A third plug-in card adds full intelligent VDU 
facilities to the system. On this card, 4096 bytes 
of RAM are scanned by the displays logic to 
produce an 80 character by 28 line video output 
suitable for feeding to a monitor or modified TV 
set. The CPU has direct access to the screen 
memory, so data can be output to the screen very 
rapidly without waiting for a serial transfer, 
and can, of course, go anywhere it likes, reading 
or writing. 

The RAM is isolated from the CPU via multiplexers, 
although the RAM appears in the CPU memory space as 
a 4K block. Several video cards can be supported 
in a multi user environment, as memory management 
enable/disable logic is provided. 

Care has been taken to blank the video during CPU 
access, thus reducing interference and "flashing" 
on the screen. Scrolling is handled at high speed 
(in seperate blocks of 16 and 12 lines) by the 
CPU simply writing a screen offset constant into a 
top or bottom screen latch. 

Each character position on the screen can be 
addressed in a graphics mode as five horizontal 
lines the width of the character. A plug-in 
option expands the video word to 12-bits (easy to 
handle with a 16-bit micro) spliting each bar 
vertically to give an overall graphics resolution 
of 160 horizontal by 240 vertical square dots 
able to be mixed with upper or lower case 
alphanumerics . 

Optional data formats are provided, allowing for 
64 characters (by 64, scrolled) or for 40 double- 
width characters (with lower video bandwidth). 

(A link provides for 625 x 50 or 525 x 60 video 
standards, but on 525, only 25 lines can be 
displayed, rather than 28.) 

6 . SOFTWARE 

Quite a lot of development time have gone into the 
software provided in the two monitor PROMS - and 
quite a few years experience in writing and using 
debug programs has provided the background. The 
usual commands to type and alter memory, registers 
and stack data are provided with enhancements to 
allow reference to memory addresses not only asa 
hex number, but as an arithmetic expression (e.g. 
an offset can be added to allow for relocated 
code) or as an indexed expression via either of the 
index registers. 

Also a leading sign can imply the length of the 
typing range, without needing a full definition 
(e.g. TM -3(2) /+6 types 6 memory location onwards 
from 3 locations below the address pointed to by 
index register 2). 

Automatic calculation of displacement for PC 
relative instruction is provided when using the 
Alter command (e.g. AM 4003, CK3F92) alter memory 
location 4003 to C18F the PC relative negative 
displacement of 8E being generated automatically). 
One bonus with the 16-bit wide instructions is that 

WEST COAST COMPUTER FAIRE 



PC relative (i.e. 2-byte) instructions can reach 
2 or 3 times further than the 8-bit micro's. Also 
instructions are constant lengths, a bonus for 
hand-assembly. 

The monitor/debug has dump and load facilities 
in hex and binary onto paper tape, audio 
cassette, and "down-line" to and from other 
computers when the system uses a PACE cross- 
assembler, or acts as a cross-assembler host 
machine to SC/MP, PACE or 8080 external systems. 

One area most monitor/ debugs fall down on is 
facilities provided for program checkout. Most 
usually only provide a break-point (or two) if 
you are lucky. At National (in Australia) we 
developed the single-step debug now used in the 
PACE Low Cost Development System from NSC. This 
has been expanded in this system to give options 
of program stepping, printing (or displaying) each 
step (with or without registers), or with 
registers which altered x^ith execution highlighted 
by a reverse video field. Optionally, the video 
display can either shox<? the last step or scroll 
up at each step or each branch of program. The 
single step facility makes use of the level zero 
non-maskable interrupt provided in the CPU. 

All input-output for system software (text editor, 
reloading loader macro-assemblers, BASIC, etc) goes 
via the monitor. I/O is defined at startup and, 
can be changed dynamically between drivers provided 
in PROM or user-supplied I/O routines called via 
link addresses examined as 1/0 routines are 
called. This allows a user to use video as the 
system console, but cause the hard copy of an 
assembler output to go to a Baudot or 
Selectric printer (Baudot code driver provided, 
Selectric user loaded). Alternatively, a Baudot 
machine can be used as system console (unique!), 
but allow programs to write ASCII hex or binary 
data to cassette. 

7. CONCLUSION 

This has been a brief introduction to the system. 
It has caused a fair amount of interest in 
Australia, and as the 16-bit field has been 
neglected on a world-wide basis, it is hoped 
that there will be interest in it from further 
afield. 

8 . REFERENCE 

INS8900 single chip 16-bit n-channel 
microcomputer data sheet. 

Oct '77, National Semiconductor Corp. 

AUTHOR BACKGROUND. 
The author has been wording in digital design for 
12 years, initially with Hawker Siddeley and since 
1972 as an applications engineer with National Semi- 
conductor .This system is a private development, and 
kits and cards are available from JED MICROPROCESSORS 
PO Box 30 ,B0R0NIA 3155 .VICTORIA .AUSTRALIA. 




385 



BOX 1579, PALO ALTO CA 94302 




Al. PACE (INS8900) CPU CARD. 

This photo shows the CPU chip, the address decoding 
and the level zero interrupt logic (for single stepping) 
with the 4K-RAM, 3K-R0M X16 memory. TTY and RS232 
interfaces allow this card to be used stand-alone. 




A2. MULTI-INTERFACE CARD FOR PACE CPU. 

Connectors across the top of this card connect to 
RSL232 20 milliamps, 3M cartridge, Kansas City 
audio cassette, paper tape reader, paper tape 
punch and parallel printer systems. Two 
USARTS on this card provide serial interfaces and 
DP8212 and other logic chips handle parallel I/O. 



A3. VIDEO INTERFACE FOR PACE CPU. 

This card, with its four K by twelve bit RAM 
provides video interface to a TV set. Formats 
provided are 28 lines of 40 or 80 characters 
and an alternative of 28 lines by 64 characters 
scrollable through 64 lines. 525 and 625 
standards are link selectable. Graphics on a 
160 by 140 matrix are also provided. 



WEST COAST COMPUTER FAIRE 



386 BOX 1 579, PALO ALTO CA 94302 



MICROPROCESSOR INTERFACING TECHNIQUES 

Rodnay Zaks, President and Austin Lesea, Senior Engineer, Lecturer 
Sybex, Inc., 216 1 Shattuck Avenue, Berkeley, California 9^704, 41 5/848-8233 



No longer is interfacing an art which 
requires years of experience and hundreds 
of integrated circuits. With the intro- 
duction of the microprocessor and other 
LSI chips, interfacing most peripherals 
becomes a technique of applying the proper 
LSI chips. 

Any interfacing requirement involving 
less than 20,000 bytes per second transfer 
rate can be solved by one chip. Many other 
tasks can be solved by the new controller 
chips, or a three or four chip microcomputer. 

Presented here are: the basic input- 
output interface chips for simple serial 
and parallel interfacing, the advanced 
protocal controllers, two device A/D, 
D/A modules for real world interface problems. 

Included here are: 

-Basic serial and parallel input- 
output IC's. 

-Specialized device controllers. 

-One chip interfaces. 

-New D/A, A/D products to simplify 
"real world" interfacing. 

Basic 10 

Typically, latches are used to store 
output values, and buffers are used to input 
values. Such specialized SSI circuitry has 
been improved greatly by providing program- 
mabil ity . 

A programmable paralleled interface pro- 
vides not only the input drivers and output 
latches, but also the interrupt circuitry, 
direction selection, and handshaking signals 
usually required. An ideal parallel interface 
chip is shown in Fig. A-l. The companies 
coming closest are Zilog, Motorola, and 
Intel with the Z-80 PI0, 6820 PIA, and 
8255 PIA, and 8255 PPI , respectively. Now 
the basic microprocessor board is universal, 
as the 1/0 can be allocated by software 
depending on the application. Hardware is 
the same in almost all cases. Only the 
software changes. 

Serial interfacing has long been integrated 
into the classic UART or Universal Asynchronous 
Receiver-Transmitter. Now we have the appear- 
ance of even more useful serial interface 
chips. The new UART provides asynchronous 
or synchronous communications capability as 



well as modem control features. Again, 
interrupt circuitry, and a variety of program- 
mable character lengths and rates are desir- 
able. The authors' ideal USART appears in 
Fig. A- 2. Again everyone has such an element 
in one form or another. Examples are the 
Tl 9901 and 9903, Intel 8251, Motorola 6850, 
and Zilog 2-SI0. 

Special Device Controllers 

The UART was first put in LSI form because 
it was a basic building block required by most 
systems. The same is now true of the circuitry 
required for printers, CRT's, floppy disks, 
cassettes, and other common peripherals. 

For your favorite printer, there is an 
interface circuit that will connect it to 
your favorite microprocessor. All the hardware 
has been done for you except for possible 
motor drive circuits or relay drive circuits. 

The most difficult and disagreeable inter- 
face task of all, that of floppy disk interfac- 
ing, has now been solved on one chip! The IBM 
dual density 37^0 compatible format is built 
into the Western Digital 1 781 interface chip. 
The only external circuitry required the data 
separator and line drivers to the floppy. Such 
parameters as stepping time, head settling time, 
block size, etc. are programmable. One chip 
then will work with most of the available 
floppies and mini floppies. from all the manu- 
facturers. The 1781 is illustrated in Fig. A - 3- 

One Chip Interfaces 

With the introduction of single chip micro- 
computers such as the Intel 8040 family and 
Texas Instrument 99^0 family, and the Mostek 
one chip F-8, we can now program our interface 
problems . 

We use the one chip processor as a dedicat- 
ed interface element in a larger system. This 
is shown in Fig. A _ 4. As long as the processor 
has enough time to handle the peripheral data 
rate requirements, we have the perfect general 
purpose interface. 

Intel has announced the 87^1 or UPI . This 
is a programmable interface element which is a 
special microcode version of the SOhS family. 
It is meant to be used as the peripheral inter- 
face element in the system. The 87^1 is the 
EPR0M version which can be user programmed and 
erased. 



WEST COAST COMPUTER FAIRE 



387 



BOX 1579, PALO ALTO CA 94302 



In the future, no special purpose inter- 
faces will be designed, they will all be mask 
programmed parts as ROM's are used today for 
software packages. We will have BASIC ROM's, 
FORTRAN ROM's, and Shugart UPl's, Pertec UPl's, 
OK I DATA PRC's, etc. Not only will we have 
"plastic software", but "plastic interfaces" 
as wel 1 . 

A/D and D/A 



» ♦ ♦ M * 



T ? T f i 1 ♦ t 



4 * 4 » i » 4 i 



TttTTfIT 



| DATA El" FEB 1 | [ 



DA 7 A SJ-FER 2 1 
} 



[ FUNCTION REG j | FUNCTION REG 



So far we are unable to measure voltages 
and currents from physical sensors. This is 
the "real world" of industrial applications. 
Designing A/D (analog to digital) and D/A 
(digital to analog) converters has long been 
a tedious process. Once done with the design, 
they were not easily interfaced to our standard 
microprocessors. 

Now we have the ADC 0816 from National. 
A CMOS part costing $20.00 in quantities, it 
provides 16 multiplexed analog inputs with an 
8 bit digital three-state output. It replaces 
previous modules costing upwards of $200.00. 
In the same way that the ADC 0816 gets the 
information in, other monolithic products are 
available to do the D/A conversion. 



In addition to A/D's, there are other parts, 
such as; the Signetics NE5018. It is a complete 
8 bit D/A on a chip. It has a built-in 
reference and input latch so that no external 
components are required for interfacing, and 
costs $8.00 in large quantities. 



-L" 



STATUS 



3 



AH 



MUX 



CONTROL 
LOGIC 



ftttlttl 

J Ut Jill 



M COPROCESSOR 
DATA BUS 



MtMt 

I I ! i 



i ! ! 
♦ » 



-or 



""T" 



CHIP 
SELECT 



CONTROL 
SIGNALS 



Typical PIO 



A- 1 



SERIAL INPUT- 



CLOCK- 

enable/reset- 



Conclusion 



PARALLEL 
IN 



The new LSI components have liberated 
the designer to spend more energy on improving 
utility and performance. No longer are inter- 
faces "dumb", but they actually reduce the 
amount of processing required by the use of CONTROL 
distributed intelligence. We now have the FUNCTIONS 
"plastic software" interface, where other than 
buffering or level shifting, all interfacing 
is done in software. This is the ideal situa- 
tion as hardware now becomes standardized, and 
the only real cost becomes programming. 

This material is a short summary of the 
concepts presented in "Microprocessor Inter- 
facing Techniques", by Austin Lesea and Rodnay 
Zaks available through Sybex, Inc., Berkeley, 
California 9*»70^, telephone: *tl 5/8^8-8233- 
Also available in most computer stores. 



RECEIVER 



TRANSMITTER 



CONTROL 



PARALLEL 
OUTPUT 



SERIAL 
OUTPUT 



STATUS 

SIGNALS 



POWER 

UART Block Diagram 
A- 2 



WEST COAST COMPUTER FA1RE 



388 



BOX 1579, PALO ALTO CA 94302 



DATA OUT 
BUFFER 



DATA 
REGISTER 



COWAND 
REGISTER 



SECTOR 
REGISTER 



TRACK 

REGISTER 



STATU'. 
REUITTFR 



WF.iTE 
UATA 



DATA SHIFT 
REGISTER 






DATA 
SEPARATOR 



(TO P. Si") 



A M 
DETECTOR 



COMPILER 
INTERFACE 
CONTROL 



PLA 
CONTROL 



INTER- 
FACE 



?LK 
J? MHZ) 



TG 1.3 

UP 
1PRT 
TROO 
READY 



PH2/PIRC 
• PH3 

3PK 

DlN 

?PRT 
■ HPL 

II1.T 



A-3 



-A ■ 

— ^/ pb 



PROM.ROM 

RAM 

O TIMED 



c=. 






Iz 



H 



7T 



A2_ 



310 0'M)«.| 



ZT 



1 






804S Point of Sale Terminal with 8279 



A-4 



WEST COAST COMPUTER FAIRE 



389 



BOX 1579, PALO ALTO CA 94302 



TESTING FOR OVERHEATING IN PERSONAL COMPUTERS 

Peter S. Merrill, Consulting Engineer 

1460 Diamond Street 

San Diego, California 92109 

Abstract 

Overheating in personal computers can be determined inexpensively with temperature 
indicating lacquers. Permissible chip junction temperatures and corresponding lacquer 
temperatures are discussed. Results of tests on the Commodore PET 2001 Series 8K 
computer are presented. 



Introduction 



Excessive temperatures can cause errors, 
intermittent operation, and can shorten the 
operating life of semiconductor components in 
personal computers. The existence of overheating 
can be estimated easily with inexpensive tempera- 
ture indicating lacquer which has an opaque dull 
color when a drop is placed on the surface of a 
component. The lacquer changes color irreversibly 
or turns clear when the indicating temperature is 
reached or exceeded. A variety of lacquers are 
available (see Table A-3) with indicating temper- 
atures throughout the range applicable to personal 
computers. The lacquer can be removed with 99% 
isopropyl alcohol. Stick-on labels are available 
also, but these are generally more expensive to 
use than lacquers. 



operating conditions with a 25°C ambient tem- 
perature at sea level, then the following 
junction temperature estimate can be made: 



J S c = 


j e c + 4°C/W 


w = 


10 watts 


Tc< 


66°C 


Tj< 
Tj< 


Tc + ,6 c * W 
66 + 4 * 10 


Tj< 


106°C 



and 
(2) 



The regulator junction temperature is less 
than 106°C with a 25°C ambient temperature. 



Estimating Semiconductor Junction Temperatures 5!l?g?! n ? w ,3 S?£c l0n Tem P eratureS of Inte 9 rated 



from Case Hot Spot Temperatures 



The important semiconductor component temperature 
is that experienced by the hottest junction on 
the chip. This junction temperature i s related 
to the temperature indicated by the lacquer on 
the hot spot of the component case by the 
relationship: 



(1) 
where: 



Tj = Tc + j 6 c * W 



Tj = Chip junction temperature, °C. 

Tc = Temperature at hottest spot on com- 
ponent case, °C. 

•6 = Thermal resistance between junction 
J and hottest spot on case, °C per watt. 

The parameter j6 c is not necessarily identi- 
cal to the overall thermal resistence of a compon- 
ent, ( j e c ). 

Estimating Junction Temperatures of Power Semi- 



conduc t ors 

For power semiconductors with heat sink 
flanges, j6 c and j0 c values are approximately 
equal and manufacturers ' j0 c values can be used 
(with caution) for junction temperature esti- 
mates using equation (1). For example, consi- 
der a voltage regulator with a j8 c of 4°C per 
watt which dissipates 10 watts in a personal 
computer power supply. If a lacquer with a 66* 
indicating temperature on the mounting tab 
remained opaque under 
" WEST COAST COMPUTER FAIRE 



Circuits in DIPs 

Figure A-1A(1) is a plot of junction-to- 
case temperature differences vs. position 
along the top of a Fairchild 723 voltage 
regulator in a 14 pin ceramic DIP. This plot" 
was obtained from tests of the regulator using 
the forward voltage characteristics of Zener 
diode on the semiconductor chip to determine 
junction temperature, and liquid crystals to 
determine case temperature under operating 
conditions. ,6c is approximately 22°C per 
watt (j6 c is approximately 80% of the measured 
•G c value of 27°C per watt). 

Figure A- IB is a plot similar to Figure 
A-1A for the Fairchild 723 voltage regulator 
in a 14 pin plastic DIP. j<Scis approximately 
38 °C per watt (:6 C is approximately 54% of the 
measured .j9 c value of 70°C per watt). 

For personal computer testing, the 
measured ,6c values for the 723 14-pin DIPs can 
be used for estimating junction temperatures of 
devices in DIPs different than the 723 package 
in lieu of better data. For natural convection 
cooling and/or for 16 pin and larger DIPs, 
junction temperatures calculated with the 723 
j6 c values may be different (but perhaps 
higher) than actual values, but errors of less 
than 10°C can be expected. Junction tempera- 
tures can be estimated from DIP case tempera- 
tures in the same way as for the power regula- 
tor example. 

390 BOX 1 579, PALO ALTO CA 94302 



Maximum Junction Temperatures 



I.C. semiconductor manufacturers usually 
specify maximum junction operating temperatures 
of 125°C or higher. Temperature related 
reliability can be expected to improve approxi- 
mately by a factor of 2 with each 10°C decrease 
in junction temperature. For personal computer 
semiconductors, maximum junction temperatures 
of less than the 100°C range may be appropriate. 
Where high reliability is desired, maximum 
junction temperatures of less than the 85°C 
range may be selected. 

Screening Out Cool Components 



all 



As a first step in evaluating semi- 
conductor junction operating temperatures, 
cool semiconductors can be screened out. 
Selection of the appropriate lacquer indicating 
temperature for ceramic and plastic DIPs is 
outlined in Table A-l for a maximum DIP junction 
temperature in the 85°C temperature range. The 
power dissipation values of 0.9 and 0.5 watts 
for ceramic and plastic DIPs represent maximum 
values that would be expected for the hottest 
DIP types used in personal computers. 

Although plastic DIPs have higher thermal 
resistances than ceramic DIPs, the maximum 
expected power level of plastic DIPs is lower. 
Thus, case temperatures for screening plastic 
and ceramic DIPs are nearly the same. This is 
shown in Table A-l. For screening out DIPs with 
junction temperatures in the 85°C range or less, 
a lacquer with indicating temperature of 66°C is 
recommended. 

Testing Hotter DIPs Which Do Not Pass the Screen 



Power levels of those components which do 
not pass the screen (the lacquer melts) can be 

determined from manufacturers' data (with caution) available for only 
and higher temperature lacquers can be applied to 
determine maximum hot spot temperatures. Then, 
junction temperatures can be estimated using 
equation (1). 

Where it is desired to decrease component 
temperatures, changes in the cooling system may 
be employed, such as adding air vent holes, 
repositioning components or P.C. boards to cooler 
locations or to augment convection, shielding or 
cooling adjacent hot components (such as power 
resistors), installing heat sinks, or adding a 
fan. If a hot component is a power semiconductor, 
circuit changes to reduce component power dissi- 
pation might be considered. 



23°C ambient temperature at sea level while 
running the program "Wrap Trap," no clear 
lacquer was observed on any component except 
for all of the MOS Technology 6550 RAMs. From 
the values of Table A-l, it was concluded that 
all DIP junctions, except for all of the 6550 
RAMs, were cooler than approximately 85°C. 

The 6550 RAMs, packaged in 24 pin plastic 
DIPs, have typical power dissipations of 0.45 
watts listed by the manufacturer. With a thermal 
resistance of 38°C per watt, a modification of 
equation (1) gives a value of Tj - Tc of 17°C. 
Thus, it is estimated that the junction 
temperatures of the 6550 RAMs exceeded 83°C. 

No further testing of the power components 
was undertaken. 

Testing the MOS Technology RAMs : Addi- 
tional temperature tests with 83 C and 76°C 
indicating temperature lacquers were conducted 
on the 6550 RAMs. No 6550 RAM case temperature 
exceeded 83°C. DIPs 12, 14, and J3 had case 
temperatures exceeding 76°C. (Those DIPs that 
are hottest may vary according to the 
particular program that is running.) As noted, 
junction temperatures are expected to be 17°C 
hotter than case hot spot temperatures. 

Results : The temperature test results of 
the PET computer are summarized in Table A-2. 
It was concluded that the PET computer cooling 
was adequate for the operating conditions 
tested. 

Concluding Remarks and Recommendations 

The technique here outlined is convenient 
and inexpensive for temperature testing of 
personal computers. The accuracy of the tech- 
nique is dependent on values for j6 c which are 
14 pin ceramic and plastic 
DIPs. However, extrapolation of the 14 pin 
results to other DIPs is expected to give 
errors within acceptable limits. 

It is recommended that the accuracy of 
each particular lacquer used be verified on 
dummy components in an oven using an accurate 
thermometer. With some lacquers, detection of 
melting after the component cools may be 
difficult. Also, lacquer indicating tempera- 
tures may change after long term exposure in 
personal computer operating environments. 

The author solicits comments on the 



temperature testing technique, additional -6 



J c 



Example: Testing Component Temperatures in the 



Commodore PET 2001 Series Personal Computer with 



8K Memory 



Screening all low temperature components : 
66°C indicating temperature lacquer (Tempil») was 
■applied to all components including power semi- 
■conductors. After operation for 3 hours in a 



WEST COAST COMPUTER FAIRE 



391 



data, and information on additional suppliers 
of temperature indicating lacquers and/or 
labels. 

Reference (1) 

Test and Analysis for Development and Evaluatior 
of Computer Air Cooling Systems. P. Merrill, 
Paper presented to Thermal session, 1978 NEPC0N 
West, February 28 - March 2, 1978. 

BOX 1579, PALO ALTO CA 94302 



Table A-l. Determining Lacquer Indicating Temperatures for Screening Out DIPs with Junction 
Temperatures Less Than Approximately 85°C 



COMPONENT 



Estimated 



A 



'C/W 



© 

Maximum 
Power 



® 

Maximum 
Tj-Tc 

CD*(D 



Maximum 

Junction 

Temp. 

Tj 



Maximum 
Case 
Temp. 



Selected 
Lacquer 

Indi- 
cating 

Temp. 



Ceramic DIP 



22 



0.9 



20 



85 



65 



66 



Plastic DIP 



38 



0.5 



19 



85 



66 



66 



Table A-2. Summary of Temperature Test Results on Commodore PET Series 2001 with 8K Memory, 
Serial No. 0010159. Ambient Temperature 23°C. Sea Level Altitude. Running the 
Program "Wrap Trap." 



COMPONENT 



(1) MOS Technology 6550 RAMs: 

(la) II, 14, J3 

(lb) II through 8 and Jl through 8 
except for (la) above. 

(2) All DIPs except for (1) 



ESTIMATED CHIP JUNCTION TEMPERATURE °C 



93 to 100 
83 to 93 
< 85 (approximately) 



Note: All power component and discrete semiconductor case temperatures were 
less than 66°C. 



Table A-3. List of Suppliers of Temperature Indicating Lacquers and/or Labels 

Note: Some of the temperature sensitive materials may be available from local 
welding equipment suppliers 



Markal Paint Company 
270 North Washington Avenue 
Chicago, Illinois 60612 
Telephone: 312/826-1700 

Teletemp Corporation 
P.O. Box 5160 

Fullerton, California 92635 
Telephone: 714/879-2901 



Omega Engineering Inc. 
31 Knapp Street 
Stamford, Connecticut 06907 
Telephone: 203/322-1666 

Tempi 1 Division, Big Three Industries, Inc. 
2901 Hamilton Avenue 
South Plainfield, New Jersey 07080 
Telephone: 201/757-8300 



WEST COAST COMPUTER FAIRE 



392 



BOX 1579, PALO ALTO CA 94302 



UjUL 

(EUJ 
DOC 
WD 



UJLU 

— in 




CERAMIC DIP 



_ j8=22°C/W 



POSITION FROM LEADING EDGE ALONG 
LENGTH OF PACKAGE, INCHES. 

Figure A-1A 



m u. 
tr. tu 

WD 

LU LU 

Q% 



100 



80 - 



60 - 



40 



20 - 



'""I 1 


1 , 

• 

/ , 

/ r 

•/* 




X. 1 










1 
i 8 . 


■ ■ 


1 


1 



PLASTIC DIP 



- ,h = 38°C/W 



POSITION FROM LEADING EDGE ALONG 
LENGTH OF PACKAGE, INCHES. 

Figure A-1B 



TEMPERATURE DIFFERENCES BETWEEN JUNCTIONS AND 
TOP SURFACES OF 723 VOLTAGE REGULATOR CHIPS IN 
14 PIN DIPS WITH AIR FLOWING AT 250 FEET AND 500 
FEET PER MINUTE ALONG LENGTH OF PACKAGE. 



WEST COAST COMPUTER FAIRE 



393 



BOX 1579, PALO ALTO CA 94302 



INTERFACING A 16 BIT PROCESSOR TO THE S-100 BUS 

John Walker, Partner, Marinchip Systems 
16 St. Jude Road, Mill Valley, CA 94941 
(415) 383-1545 



Introduction: The K9900 CPU 



Marinchip Systems has developed a 
CPU board which allows the Texas 
Instruments TMS9900 processor to be 
used on the enormously popular S-100 
bus. This board, the M9900 CPU, 
replaces the 8080 or Z-80 CPU board 
in an S-100 mainframe, and uses the 
existing memory and peripherals, or 
almost any S-100 compatible board. 
The TMS9900 is an extremely powerful 
processor, which features hardware 
multiply and divide instructions, 
multiple sets of 16 general purpose 
registers, addressing modes 
including direct, indirect, indexed, 
and auto-increment, and a context 
switch mechanism that allows both 
rapid interrupt response and user 
extension of the hardware 
instruction set. The TMS9900 is a 
single chip processor that is 
comparable to the PDP-11 in most 
respects, and exceeds it in several 
important ways, notably the 
provision of 16 registers instead of 
8 and the fact that the user can 
have as many independent register 
sets as he wants, and need not be 
limited to hardware registers within 
the CPU. 



The purpos 
explore th 
a fully pa 
the S-100 
peculiar it 
structure 
were deve 
The perf 
compromise 
be discus 
recommenda 
for certai 
presented . 



e of this 
e problems 
rallel 16 
bus, conce 
ies of 

and the 
loped to 
ormance 
s made in 
sed , and 
tions reg 
n S-100 s 



paper will be to 

of interfacing 

bit processor to 

ntrating on the 

the S-100 bus 

solutions that 

surmount them . 

tradeoffs and 

the design will 

finally some 

arding standards 

ignals will be 



Since this paper will be discussing 
signals generated by both the 8080 
and the TMS9900 processors, as well 
as S-100 bus signals, some 
conventions have been adopted to 
lessen confusion. Signals generated 
by either CPU chip are referred to 
by the name given them by the chip 



manufacturer. Which chip is being 
referred to should be clear from 
context. S-100 signals will always 
be suffixed by their pin number in 
parentheses. Active low signals 
will be identified by a minus sign 
following the signal name. 

TMS-9900 Bus Structure 



The task of interfacing one 
processor to a bus designed for 
another involves designing logic 
that will transform the signals 
generated by one processor into the 
corresponding signals of the other 
processor. The fact that the 
processors have different word 
lengths increases the complexity of 
the solution, but introduces few 
conceptual problems. First, let us 
look at the signals used by the 
TMS9900 processor. The TMS9900 is 
one of the simplest microprocessors 
to interface, largely because there 
is no multiplexing of information on 
package pins. Each pin has one 
clearly defined function, so the 
external decoders and latches 
required in many other systems may 
be eliminated. The price paid for 
this simplicity is the 64 pin 
package required to accomodate all 
the independent signals. The 
signals which are relevant to memory 
accesses are the address bus, data 
bus, and control bus. The address 
bus consists of 15 lines 
representing bits 1 through 15 of 
the address being referenced. Since 
the TMS9900 uses 16 bit wide memorv, 
the 15 address bits permit 
addressing of 64K bytes of memory. 
(Byte addressing is handled by 
masking data within the processor, 
and is of no concern in interfacing 
it.) The data bus is a 16 bit 
bidirectional bus which behaves 
exactly like the data bus of an 
8080, except that it is twice as 
wide. The control bus consists of 
the signals that control the 
external memory. These signals all 
appear on their own dedicated pins, 
so no status latching is required as 



WEST COAST COMPUTER FAIRE 



394 



BOX 1579, PALO ALTO CA 94302 



■for the 8080. The signal MEMEN- is 
la low-true signal which indicates a 
■memory access is in progress. When 
it appears, a valid memory address 
is present on the address bus. The 
signal DBIN indicates the direction 
of the memory data transfer. When 
DBIN is high, the output drivers on 
the 16 data bus lines have been 
disabled to allow the memory to 
place data on the lines in response 
to a memory read. MEMEN- and' DBIN 
simultaneously active indicate a 
memory read, while MEMEN- active and 
DBIN inactive indicate a memory 
write. The TMS9900 generates a 
write enable signal, WE-, which goes 
active during a write cycle after 
the address and data have been 
present for sufficient time to 
satisfy the setup time requirements 
of most static memories. This 
signal allows easy interfacing of 
memories to the processor, but is 
not used in the M9900 CPU because 
the memory cycle must be segmented 
into two independent 8 bit accesses. 
The READY and WAIT lines permit the 
processor to delay to accomodate 
slow memories. After the address 
has been presented to the memory bus 
and MEMEN- goes active, READY is 
sampled. If high, the memory cycle 
will complete on the next clock 
cycle. If READY is low, the WAIT 
signal is brought active and the 
processor will delay one cycle, at 
which time it will test READY again, 
and either proceed or delay again 
depending on its state. In the 
M9900 CPU the READY line is used to 
cause the processor to wait for the 
two cycles on the S-100 bus to be 
completed. The WAIT line is not 
used, since the M9900 must generate 
the S-100 wait signal in response to 
a wait state encountered on either 
(or both) of the 8 bit accesses. 
The above signals comprise the 
complete memory interface of the 
TMS9900, and seem to be the minimum 
orthogonal set of signals allowing 
control of variable speed memories 
with no external decoding. The 
TMS9900 has no complex timing 
relationships between signals. 
Every signal generated by the 
processor is related to one of the 
four clock phases, and there is a 
uniform propagation delay, typically 
20 nanoseconds, from the clock edge 
to the signal . 

8080 Bus Structure 



WEST COAST COMPUTER FAIRE 



395 



The memory bus of the 8080 is 
similar in concept to that of the 
9900, but more complicated in 
practice because the control signals 
relevant to memory are divided into 
command and control signals which 
appear directly on processor pins 
and status signals which are output 
on the data bus during the first 
state of each machine cycle. A 
memory cycle in the 8080 consists of 
three or more machine states. 
During the first state, the 8 bit 
data bus outputs the status bits 
which indicate what type of cycle is 
being performed. The processor 
generates a signal, SYNC, which 
identifies the first state of the 
cycle and may be used to latch the 
status bits for use later in the 
cycle. The status bits, properly 
decoded, identify the type of cycle. 
The ones relevant to memory and I/O 
cycles are MEMR, WO-, INP, and OUT. 
The MEMR bit identifies a memory 
read cycle (except when it comes on 
during a halt cycle, which will be 
ignored henceforth) . The INP and 
OUT bits identify I/O read and write 
cycles, respectively. The WO- 
signal is active when a write is 
being done to either memory or an 
I/O device: external logic must 
generate the write strobes for I/O 
and memory based upon the OUT bit. 
The rest of the status bits are used 
to implement the 8080 interrupt 
scheme, to indicate when the machine 
is halted, to flag accesses to the 
stack, and to indicate when an 
instruction byte is being fetched. 
The command and control signals are 
almost identical to those of the 
TMS9900 in name and function. The 
DBIN signal indicates that the data 
bus is in input mode to receive 
data, WR- is the delayed output data 
strobe, READY is the line that may 
be used to stretch the length of a 
memory or I/O cycle, and WAIT is the 
signal that confirms that the 
processor is waiting. The address 
bus on the 8080 is 16 bits wide, 
since the 8080 uses byte-addressable 
memory, and the data bus is an 8 bit 
bidirectional bus. I/O on the 8080 
provides 256 ports. An IN or OUT 
instruction referencing one of these 
ports causes a bus cycle identical 
to a memory cycle, except that it is 
identified as I/O by the presence of 
the INP or OUT bits on the status 
bus. In an I/O cycle, the 8 bit 
port address is presented on BOTH 
the high and low 8 bits of the 

BOX 1579, PALO ALTO CA 94302 



address bus. (This "address mirror" 
feature is intended to reduce bus 
loading by dividing devices between 
the high and low bytes of the 
address lines in system without 
address buffering.) The timing 
relationships of the 8080 signals 
are quite complicated. The 8080 is 
driven with a two phase clock. The 
two phases must not overlap, and 
have different widths. The command 
and control signals may be delayed 
as much as 120 nanoseconds from 
their controlling clock edge, and 
the address and data may not be 
stable for as much as 220 
nanoseconds after the clock edge. 

S-100 Bus Structure 



The S-100 bus is largely the result 
of simply buffering the signals 
generated by the 8080 and directly 
presenting them to the bus. It will 
help to break up the bus signals 
into groups and discuss them 
independently. 

Clocks. There are three clock 
signals on the S-100 bus. The first 
two are the Phase 1 and Phase 2 
processor clocks, presented as TTL 
levels, PH1(24) and PH2(25). The 
third signal is named CLOCK-(49) , 
and is. an inverted Phase 2 clock, 
delayed about 60 nanoseconds (an 
artifact of the original Altair 
design) ... Both..PH2.(25) and 
CLOCK-(49) are commonly used as 
timing references by peripheral 
boards . 

Address Lines. The 16 address lines 



appear on the bus, buffered directly 
from the processor address lines. 
The line ADDR DSBL-(22) will cause 
the address lines to go to high 
impedance when pulled low. 

Data Lines. The 8 bit bidirectional 
processor data bus is split by logic 
on the CPU board into an 8 bit data 
in bus and an 8 bit data out bus on 
the S-100 bus. Whether the data ir> 
bus is applied to the processor date' 
bus is controlled by the DBIN signa] 
from the processor. Since the data 
out lines are dedicated to output, 
their drivers are always on, except 
if disabled by pulling the line DO 
DSBL-(23) low. 



■: . 

I direct control lines from 
I processor appear on the command 



Command and Control Lines 



WEST COAST COMPUTER FAIRE 



The 
the 
and 



396 



control S-100 lines. The signal 
PSYNC(76) is the SYNC signal from 
the processor that identifies the 
first state of each machine cycle. 
PWR-(77) is the orocessor delayed 
write strobe. PDBIN(78) is the DBIN 
signal from the processor. Most 
(but not all) S-100 boards only 
drive the data in bus when PDBIN(78) 
is high. PINTE(28) is the signal 
from the processor (INTE) which 
indicates that the processor has 
interrupts enabled. PWAIT(27) is 
the WAIT signal that indicates the 
processor is waiting for the READY 
signal from a peripheral. PHLDA(26) 
is the HLDA processor, signal which 
acknowledges a DMA request. (Refer 
to the section below on DMA control 
signals for more information on the 
PHLDA(26) signal.) The six command 
and control lines may be forced to 
high impedance by pulling the line 
CC DSBL-(19) low. 

Status Lines. When the status 
signals appear on the processor data 
bus during the first state of a 
cycle, they are latched and 
presented on a separate set of 
status lines on the S-100 bus. The 
status bus remains stable for the 
duration of the machine cycle. The 
SMI (44) line indicates the current 
cycle is fetching the first byte of 
an instruction. The SOUT(45) bit 
identifies an output cycle 
(initiated by the OUT instruction) . 
The SINPC46) pin identifies an input 
(IN instruction) cycle. SMEMR(47) 
indicates a memory read cycle, and 
SHLTA(48) indicates that the 
processor is halted. The SWO-(97) 
signal indicates a write-type 
operation: if SOUT is low, it is a 
memory write. If high, it is an I/O 
write. The SINTA(96) signal 
identifies the special 8080 cycle 
that responds to an interrupt by 
requesting an instruction to be 
executed by the processor, and the 
SSTACK(98) signal "flags the current 
memory cycle as referring to the 
stack. The status bus signals may 
be forced to high impedance by 
pulling the STAT DSBL-(18) line low. 

Memory Control Lines . These lines 
are a collection of signals relating 
to memory and I/O cycles. The 
PRDY(72) line is applied through a 
buffer to the READY pin on the 8080, 
and is used by slow memory and 
peripherals to stretch a cycle that 
references them. The MWRITE(68) 

BOX 1579, PALO ALTO CA 94302 



signal is a copy of the PWR-(77) 
write strobe that only goes low on 
memory writes (e.g., when SOUT(45) 
is low) . This is the most commonly 
used write control signal in memory 
boards. It is also quite confusing 
in that many S-100 machines do not 
generate it on the CPU board. The 
Altair and IMSAI , for example, 
generate this signal on the front 
panel board, with the result that 
memories which require this signal 
will not run if the front panel is 
removed. To compensate for this, 
many of the "reset and go" PROM/RAM 
boards contain logic to generate 
this signal, since they are 
replacing the front panel in . a 
system. This signal is logically a 
CPU signal, and really has no 
business being generated anywhere 
else, but the weight of history is 
great, so for the time being 
confusion will reign. The 
UNPROT(20), PROT(70), and PS-(69) 
signals respectively clear, set, and 
contain the status of the memory 
protect flip-flop on the currently 
addressed memory board. Since 
memory protect is little used, they 
will not be discussed further. The 
PHANTOM-(67) signal is used by many 
systems and boards to allow an 
automatic power-on start from a 
nonzero address. The memory board 
at address zero is strapped to be 
deselected regardless of the address 
on the bus when PHANTOM- (67) is low. 
A PROM board then can, when 
triggered by a reset signal, disable 
the memory at address zero, enable 
itself, and cause the CPU to execute 
instructions from the PROM even 
though the CPU "thinks" it is 
executing from address zero. The 
PHANTOM- (67) line is normally turned 
off once the processor has jumped 
into the PROM itself. The memory at 
address zero may then be referenced 
normally. 

Interrupt Signals . The lines 
VI0-(4) through VI7-(11) are the 
vectored interrupt requests. 
Pulling one of these lines low will 
cause an interrupt at the 
corresponding level, assuming that 
interrupts are enabled and the 
processor is not servicing a higher 
priority interrupt. VI0-(4) causes 
an interrupt which is not 
distinguishable from a reset of the 
processor, and hence should be used 
with discretion. Since the early 
S-100 processors did not provide 



vectored interrupts on the CPU 
board, the signal PINT-(73) was 
defined to permit a separate 
vectored interrupt controller board 
to request an interrupt from the 
processor. In such a system, the 
vectored interrupt controller board 
received the 8 vectored interrupt 
lines, chose the highest priority, 
then requested an interrupt using 
the PINT-(73) line and supplied the 
processor with an interrupt 
instruction when the SINTA(96) line 
went high. Because of the way the 
8080 CPU interrupt structure worked, 
systems without a vectored interrupt 
board could provide a single level 
interrupt simply by pulling the 
PINT-(73) line^low. 

Front Panel Signals . The following 
signals provide the interface 
between the front panel and the 
boards on the bus. Since some 
systems have complex front panels 
and others have only a reset switch, 
most of these signals may be absent 
in a particular system. The only 
signals in the front panel group 
present in all S-100 mainframes are 
PRESET-(75) and POC-(99). 
PRESET- (75) is pulled low when the 
reset switch on the front panel is 
activated. The CPU board normally 
responds to PRESET- (75) by resetting 
the processor and pulling POC-(99) 
low. POC-(99) is also driven by 
logic that keeps it low on a 
power-up operation until the supply 
voltages have stabilized. Thus, if 
peripheral boards use POC-(99) as 
their clear signal, they will be 
properly reset both by initial 
application of power to the system 
and by the reset switch. The 
following signals are present only 
in those systems with elaborate 
front panels. The RUN(71) signal is 
used to indicate that the front 
panel RUN/STOP switch is in the RUN 
position. The SSW DSBL-(53) signal 
is used by some front panels to 
implement data input to the 
processor from the front panel 
switches. The EXT CLR-(54) signal 
resets I/O devices independent of 
the processor . What it does and 
when it is activated depends upon 
the peripheral and mainframe being 
examined. The SS(21) signal is used 
by certain front panels to implement 
a single step function. It allows 
the front panel to place data 
directly on the processor data bus 
(this requires a connection from the 



WEST COAST COMPUTER FAIRE 



397 



BOX 1579, PALO ALTO CA 94302 



front panel to the CPU card) . The 
XRDY(3) signal allows the front 
panel to stop the processor without 
interfering with the PRDY(72) signal 
used by memory and peripherals. The 
typical CPU ANDs XRDY and PRDY to 
develop the READY signal for the 
8080. 

DMA Control Signals. Direct Memory 
Access (DMA) can be implemented on 
the S-100 bus through use of the 
PHOLD-(74) signal. When this signal 
is pulled low, the processor 
suspends execution at the end of the 
current instruction, and raises the 
HLDA line, which appears on the bus 
as PHLDA(26). Once the requesting 
peripheral sees this signal, it can 
pull the lines STAT DSBL- (18) , CC 
DSBL- (19), ADDR DSBL- (22), and DO 
DSBL- (23) low and assume control of 
the bus itself. It should be noted 
that pulling the CC DSBL- (19) line 
low forces the PHLDA(26) signal 
itself to high impedance. If this 
signal is being used as a direct 
enable by the DMA board, its 
floating may lead to havoc, 
especially because line 25 right 
next door is the Phase 1 2MHZ clock, 
which puts a lot of noise on the 
floating line. Pulling up PHLDA(26) 
to +5 with a resistor neatly solves 
this problem, but few CPU boards do 
this. 

Power and Aroun d Lines. Power to 
the S-100 bus is unregulated, since 
each board regulates the raw supply 
to its desired logic levels. Pins 1 
and 51 supply a nominal +8 volts. 
Pin 2 supplies +16 volts, and pin 52 
supplies -16 volts. There are no 
specifications and few conventions 
about the voltages actually found on 
these pins. Specifically, some very 
high voltages occur in certain 
mainframes. If the +8 line goes to 
12 volts, the dissipation in the on 
board regulators may exceed the 
capacity of their heat sinks, 
forcing thermal shutdown of the 
regulator and malfunction of the 
board. One might point out as an 
aside that since these supplies are 
unregulated they contain ripple, and 
at least one CPU board counts on 
this! The ripple is amplified with 
an op-amp and used to provide a line 
frequency real time clock. Pins 50 
and 100 are the common ground return 
for all supplies, and the logic 
ground reference. Whether or not 
this is tied to safety (green wire) 

WEST COAST COMPUTER FAIRE 



398 



ground depends upon the mainframe. 
Pin 55 is defined as chassis ground, 
but very few mainframes actually 
connect this pin. 

The reader might have noticed that 
it took a lot more words, 
explanations, and hedging to explain 
the S-100 bus than to explain the 
8080 processor signals themselves. 
This is the case because one of the 
many different CPU boards or 
"compatible" I/O boards gives lie to 
just about any definitive statement 
regarding the bus one might choose 
to make (except possibly that it has 
100 pins) . 

Interfacing to the S-100 Bus 

The job of interfacing the TMS9900 
to the S-100 bus fell largely into 
three phases: mapping the signals 
from the 9900 bus to the S 100 bus, 
defining the subsystems that would 
make up the CPU card, and logic 
design and debug. First of all, the 
memory cycles of the TMS9900 and the 
8080 were drawn out side by side, 
and a mapping was defined between 
the two. It was found that every 
signal corresponded in both 
directions closely enough that once 
16 bit TMS9900 bus was multiplexed 
onto the 8 bit S-100 bus, all the 
other signals could be translated. 
In this phase of the design, it was 
decided to implement S-100 I/O by 
providing memory mapped I/O in a 
page of the TMS9900 addressing 
space. This was done because the 
unique TMS990 I/O scheme did not 
lend itself to adaptation to 
existing S-100 peripherals, and 
because the memory bus interface 
that had to be designed for the 
TMS9900 already contained all the 
logic required to implement the I/O 
cycle. Once it became clear that 
the problem was solvable, the 
following subsystems that made up 
the TMS9900 CPU board were defined. 

Clock Generator. This subsystem 
contains the generator for the four 
phase clock required by the TMS9900 
and the logic that transforms the 
9900 clock pulses into a 
synchronized replica of an 8080 
clock. A properly delayed inverted 
signal is generated for the 
CLOCK-(49) signal. 

Across B nfi Driver. This subsystem 
takes the address bus of the 9900 

BOX 1 579, PALO ALTO CA 94302 



and drives the address lines on the 
S-100 bus. Depending upon whether 
the address on the address bus is 
within the memory mapped I/O region, 
this logic either drives the address 
directly onto the bus (for normal 
memory accesses) or places the low 8 
bits of the 9900 address bus on both 
the high and low 8 bits of the S-100 
address lines (for I/O accesses) . 
For normal memory references, the 
upper 15 address bits on the bus are 
supplied by the 9900 chip, and the 
low order bit is generated by the 
memory bus controller subsystem (see 
below) . 

Data Bus Driver. This subsystem 



contains the drivers that route data 
to and from the data in and data out 
lines. The data out lines are 
driven by two sets of drivers that 
can route either the high or the low 
byte of the 9900 16 bit data bus to 
the data out lines. The data in 
lines are received by two 8 bit 
latches that save the data appearing 
on the data in lines for parallel 
presentation to the 9900 as a 16 bit 
data word. in addition, extra 
drivers provide the data paths 
necessary to use the data in and 
data out lines as a 16 bit parallel 
bidirectional data bus for use with 
special Marinchip high-performance 
memories (see the description of 
"Sixteen bit mode" below) . 



Memory Bus 



Controller . 



This 

subsystem is the heart of the M9900 
CPU. When a memory access is 
initiated by the TMS9900, the memory 
bus controller is started. 
Depending upon whether the address 
presented by the 9900 is within the 
memory mapped I/O region or not, the 
controller generates an I/O or two 8 
bit memory cycles. While the 
controller is operating, the READY 
line of the 9900 is held low to 
force it to wait for the data to _be 
transferred on the S-100 bus. The 
memory bus controller is a random 
logic implementation of the 8080 
memory timing logic, which generates 
PSYNC(76), PWR-(7 7) , MWRITE(68), 
PDBIN(78), and PWAIT(27) as if an 
8080 were directly connected to the 
bus. PRDY(72) is honored with the 
same timing as the 8080 expects. 
The memory bus controller also 
generates the signals to the data 
bus drive subsystem that route data 
to and from the S-100 bus and the 
9900 data bus, and the strobes that 

WEST COAST COMPUTER FA1RE 



399 



latch data from the S-100 bus at the 
same time an 8080 would have sampled 
it. • When the memory bus controller 
gets the PRDY(72) for the final byte 
of a transfer, it raises READY to 
the 9900, allowing it to proceed 
with its execution. By anticipating 
ready it is possible to complete the 
16 bit memory cycle in the same time 
an 8080 would have taken to fetch 
two bytes (six machine states) . I/O 
cycles take three machine states. 
The PINTE(28) signal, which 
indicates that interrupts are 
enabled in the 8080, is always high, 
since the 9900 does not provide this 
status on an external pin. The 
PHLDA(26) signal, which acknowledges 
a DMA request is simply the HOLDA 
pin of the 9900 buffered to the bus. 
A pull-up resistor is provided on 
this line to prevent the "floating 
PHLDA(26)" problem mentioned above. 
The DMA request line, PHOLD(74), is 
latched before being passed to the 
HOLD line on the 9900. While this 
signal is internally latched in the 
9900, the internal latching is done 
at a different time in the 9900 and 
the 8080, so the external latch 
accomodates any device that counts 
on the 8080' s timing. This may be 
paranoid, but better to be over 
compatible than to discover the CPU 
doesn't work with somebody's "sloppy 
disc" controller. 

Status Bus Generator . Logic decodes 
signals from the 9900 and the memory 
bus controller to generate the 
status bus signals. SWO-(97), 
SHLTA(48), SOUT(45), SINE* (46), and 
SMEMR(47) are generated compatibly 
with the 8080. Since SSTACK(98) and 
SINTA(96) represent concepts not 
applicable to the 9900, they are 
always low. On an 8080 system, the 
status bus signals may also be read 
from the data bus when PSYNC(76) is 
high (an artifact of the way the 
8080. supplies these signals). The 
M9900 CPU does not include logic to 
place these signals on the data bus, 
since it was felt that no board 
designer would count on this quirk 
of the 8080. Few do. 

Reset and Load Generator . The reset 
and load generation subsystem 
generates the two nonmaskable 
interrupts for the 9900. The 
subsystem is designed so that the 
reset switch on the S-100 mainframe 
may generate either signal. The 
9900 reset traps to address zero, 

BOX 1579, PALO ALTO CA 94302 



while the load causes a trap to 
address FFFC, so by strapping the 
CPU board properly, the user may run 
with ROM at either end of memory. 
The reset and load subsystem also 
decodes the 9900 instructions that 
force a reset or load operation, and 
generate signals equivalent to 
performing the actions via the 
external switches. A power-up reset 
circuit causes the CPU to start 
automatically at the selected 
address after power is stable. The 
power on clear signal, POC-(99), is 
generated. 

Interrupt Controller. The 990 
features 16 level priority 
interrupts within the chip, so only 
a latch to stabilize the eight 
interrupt requests on the S-100 bus 
and a priority encoder are required 
to provide 8 level interrupts. The 
other 8 9900 interrupts were not 
used, and the 8080 trick of 
requesting an interrupt via the 
PINT- (73) line was not implemented. 
The user can easily enough strap 
PINT- (73) to one of the vectored 
interrupt lines if this is required. 

Once the problem had been subdivided 
into the above subsystems and the 
functions of each subsystem clearly 
defined "all" that remained was to 
design the logic within each 
subsystem. This was done, a 
prototype was built, and the 
inevitable debug phase was .begun. 
Other than straightforward design 
errors, several problems began to 
crop up which seemed to indicate 
problems inherent in the S-100 
standard itself: problems that will 
beset any designer of a non-8080 CPU 
board. It is these problems that 
will be discussed below: 

Wait State Timing Reference . In 
peripherals that stretch the bus 
cycle with the PRDY(72) signal, 
there is no convention regarding 
which pin defines the start of a 
memory or I/O cycle. Some boards 
use PSYNC(76), others use the status 
bus signals or MWRITE(68). The 
M9900 CPU originally generated the 
status bus signals immediately at 
the start of the memory cycle rather 
than waiting 200 nanoseconds like 
the 8080, and this caused some 
boards to miss their wait states 
because they were starting one-shots 
to time the wait state when the 
status bus signals changed. The 



early status signals from the M9900 
caused the one-shot to expire before 
the processor sampled PRDY(72). The 
final M9900 design delays the status 
bus signals for compatibility. 
Since there are many ways to decide 
what kind of cycle is being 
performed from the signals on the 
bus, there are correspondingly many 
ways to time the cycle. It seems 
unreasonable to expect every 
processor to reproduce all the 8080 
signal timing relationships exactly, 
so a simple definition of what is to 
be used would be a great boon to CPU 
and peripheral board designers both. 
It would be nice if we decided to 
make MWRITE(68) universal. Then we 
could count on SINP(46), SOUT(45), 
SMEMR(47) , and MWRITE(68) as four 
simple signals that identify the 
current cycle. 

DMA Protocol. The whole area of DMA 
protocol on the S-100 bus is very 
loosely defined. The statement that 
the DMA device must keep PHOLD-(74) 
low until the processor responds 
with PHLDA(26) would ease one area 
of confusion. The existence of 
separate disable lines for each of 
the buses is too ingrained in 
ingenious bootstrap schemes to do 
away with at this late date, 
however, some statement such as "The 
disable lines will never be 
activated unless the PHLDA(26) line 
is active" would be a step in the 
right direction. 

Utility Clocks. An 8080 on the 
S-100 bus provides perfectly good 2 
Mhz clocks on three separate pins. 
Boards which need a clock for 
general timing such as generating 
communications baud rates or 
implementing a real time clock have 
no particular reason to choose one 
over the other. This is a problem 
when trying to use a processor that 
runs at a speed other than 2 Mhz. 
We should define PHI (24) and PH2(25) 
as CPU clocks which run at the 
processor clock rate and to which 
memory timing is relative. 
CLOCK- (49) should be defined as a 2 
Mhz utility clock signal which bears 
no specific timing relationship to 
the CPU clock. 

Unique Features of the Design 

The M9900 CPU has succeeded in 
interfacing the TMS9900 to the S-100 
bus. The CPU is a single board 



WEST COAST COMPUTER FAIRE 



400 



BOX 1579, PALO ALTO CA 94302 



system that will 
existing S-100 
memories. It is, 
compatible with 
than many Z-80 boar 
in interfacing to 
The major innovatio 
architecture introd 
CPU is its ability 
bus for 16 bi 
transfers. 



run with most 
peripherals and 
in fact, more 
8080 peripherals 
ds, particularly 
dynamic memories, 
n in S-100 bus 
uced by the M9900 
to use the S-100 
t parallel data 



Sixteen Bit Mode . 



Obviously, 



forcing a 16 bit parallel processor 
to do all of its memory accesses in 
byte-sized chunks reduces its 
performance compared to a fully 
parallel system. In most 
applications, the increased power of 
the TMS9900 instruction set results 
in such a performance gain that the 
overhead introduced by the extra 
memory accesses is overcome. For 
those applications which require the 
greatest CPU power, the M9900 CPU 
allows the use of 16 bit parallel 
memory in the S-100 chassis. The 
key to this option is the signal 
that Marinchip Systems has 
designated SXTN-(60). When a memory 
cycle starts, if this signal is 
pulled low by the addressed memory 
board within 125 nanoseconds, the 
SYNC cycle will be aborted, and the 
memory transfer will be performed 16 
bits parallel, using the S-100 data 
out bus for the high byte and the 
S-100 data in bus for the low byte. 
A memory cycle performed in 16 bit 
mode will complete in one 
microsecond (assuming no wait 
states) , compared to three 
microseconds if conventional S-100 
memories are used. This can result 
in performance gains approaching 
three-to-one. Since the memory 
itself informs the processor if it 
is capable of 16 bit operation, it 
is possible to mix conventional 8 
bit and 16 bit memory in the same 
chassis. Obviously, a 16 bit memory 
is a rather special beast, 
especially so if it is capable of 
operating in 8 bit mode for DMA 
transfers. None the less, the 
design of such a memory is a 
straightforward task beside the 
design of the M9900 CPU itself. 

CRU I/O Signals . Little has been 
said about the TMS9900's unique 
bit-addressable I/O scheme, the 
Communications Register Unit (CRU) . 
This mechanism performs bit-serial 
transfers from the processor to 

. WEST COAST COMPUTER FAIRE 



external devices within a 4096 bit 
address space. This approach 
permits peripheral chips to be built 
with few costly pins and no external 
logic. For example, the UART for 
the 9900 family is an 18 pin device, 
compared with the 28 to 40 pins 
required with other microprocessors. 
Since the CRU I/O was not used in 
interfacing to the S-100 bus, it was 
simply brought to the bus on three 
unused pins. Future 9900 
peripherals may be built to take 
advantage of this unique I/O system. 

Summary 

The M9900 CPU is a happy marriage of 
the advanced 16 bit architecture of 
the TMS9900 and the widely accepted 
S-100 bus. The interfacing of the 
9900 revealed several 
characteristics and problems of the 
S-100 bus that deserve to be 
standardized. The design of the 
M9900 CPU took a very conservative 
approach to the S-100 bus, and tried 
to generate virtually all the 
signals provided by an 8080, with 
the same timing relationships. 
Careful work by a standards group 
would have permitted a much more 
straightforward design, and will 
greatly ease the task of others who 
wish to interface foreign processors 
to the bus. The extensions to the 
S-100 bus made by Marinchip Systems 
were to provide the unique 
performance and features of the 9900 
within the existing bus 
architecture. The author would 
welcome communications regarding 
standards for 16 bit (and wider) 
operation on the S-100 bus. 



401 



BOX 1579, PALO ALTO CA 94302 



SINGLE CHIP MICROCOMPUTERS FOR THE HOBBIEST 

John Beaston, Microcomputer Applications 

Intel Corporation 

3065 Bowers Avenue 

Santa Clara, California 95051 



Abstract 



Recent advances in solid state technology 
have allowed integrated circuit manufacturers 
to place all the elements of a computer system 
on a single silicon die. Although most of 
these single chip microcomputers are ROM 
(Read Only Memory) based and primarily 
intended for high volume users, EPROM (Erasable, 
Programmable ROM) based versions have also 
been developed to overcome the high develop- 
ment and rework costs associated with their 
ROM counterparts. This EPROM technological 
fallout opens up a whole new world of 
versatile, low cost, dedicated control for 
the computer hobbiest. As an introduction 
to single chip microcomputers, a specific 
microcomputer, the EPROM based Intel 8748, 
is discussed in detail with both the hardware 
and software aspects explained. Finally, 
a typical application example is presented. 

Introduction 



One of the few areas not often addressed 
by computer hobbiest is that of control 
application for ..microprocessors. A sample 
of such applications might include burglar/ 
fire alarms, radio controlled models, 
printer controllers, and ham radio accessories. 
There are probably several reasons for the 
interested hobbiest not tackling such projects. 
The greatest deterent is the non-availability 
of specialized hardware. The hobbiest using 
an S-100 based computer as a burglar alarm 
is probably guilty of processor overkill, 
however designing and building a dedicated 
microprocessor based alarm system would be 
expensive and very hardware intensive, so 
there really has been no alternative. 
Portability is another consideration. Many 
control applications like radio controlled 
models preclude the use of most microprocessor 
based systems simply due to high parts count 
and power supply demand. Handling multiple 
tasks is also a problem. If one processor 
is to control several tasks such as a printer 
and keyboard in addition to the alarm system, 
the software must be written with this in 
mind. Adding additional tasks is usually 
a difficult task in itself. And finally, 
it is well known that even a minimal system 
containing the required amount of I/O 



WEST COAST COMPUTER FAIRE 



402 



and memory for the usual control applica- 
tion is not inexpensive. With these 
deterents, it is no wonder that hobbies ts 
have not pursued the more control -oriented 
applications. But never fear, a need has 
been seen and filled. 

Recent advances in semiconductor 
technology have enabled integrated circuit 
manufacturers to pack all the elements of 
a control -oriented microprocessor system 
on a single silicon die. These micro- 
computers contain a CPU, RAM, EPROM/ROM, 
I/O, timers, and a clock generator all 
on one chip. Most of these microcomputers 
are capable of stand-alone operation while 
some operate as a slave processor to a more 
powerful master processor. 

These microcomputers remove all of 
the deterents mentioned earlier. They have 
obviously low parts count. Their power 
requirements are correspondingly reduced. 
Multi -tasking is easy since each task may 
have its own controller. And their cost 
is significantly below that of a micro- 
processor based. system with equivalent 
capabilities. With these deterents removed 
those hobbiests interested in control 
applications can now come "out of the 
closet" and invent and build to their 
heart's content. 

Desirable Control Characteristics 

As an introduction to single chip 
controllers, let's examine several 
characteristics which are desirable in 
single chip control applications. 

1. Single 5v supply 

2. Code efficient instruction set 

3. Timing control 

4. Interrupt capability 

5. Expandable memory and I/O 

6. Compatible ROM/EPROM versions 



BOX 1579, PALO ALTO CA 94302 



prmgre— g 



*-**^ 



The single supply characteristic is 
almost universal in the present and upcoming 
generation of both microcomputers and 
microprocessors. Its advantage is obvious - 
fewer power supply hassles. 

All instruction sets, whether in micro- 
computers or microprocessors should be code 
efficient. However, this characteristic is 
particularly important for single chip 
controllers. With all memory on-chip, each 
byte is precious. So every method to con- 
serve code is desirable. One method of 
achieving code efficiency is to limit the 
addressing range to, say, 4K bytes rather than 
the usual 65K. (Since control applications 
rarely require more than IK of program 
memory, this is not really a restriction..) 
This allows memory reference, Jump, and Call 
instructions to not have to carry the cumber- 
some 16 bit address with it. These instruc- 
tions can now be compacted into 2 bytes 
rather than the 3 bytes found in microprocessor 
codi ng . 

Several additional characteristics of 
the instruction set are important for code 
efficient control. Many control applications 
require only one bit wide I/O; switches are 
read, relays and lamps are driven. Thus the 
bit manipulation capabilities of the instruc- 
tion set are important. The instruction 
set should be able to set and reset individual 
output port bits and to read and test 
individual input port bits. 

Some controllers are often called upon 
to drive displays and read keyboards. There- 
fore, the instruction set should have binary 
and BCD arithmetic capabilities. Decimal 
adjust and nibble swapping instructions 
provide an efficient means of handling BCD 
data. 

The third control characteristic is 
timing control. Timing control involves two 
functions: sequencing and event counting. 
In sequencing, the controller generates 
accurate time intervals or pulse streams to 
replace cams and gears in mechanical systems, 
or for external timing to multiplex displays, 
etc. In event counting, the controller is 
used to count events or to keep track of an 
external timing source such as 60Hz for 
time-of-day computations or where long time 
intervals are to be maintained. In most 
microcomputers, the timing control function 
is implemented with a programmable on-chip 
timer/counter. Having the timer on-chip 
decreases parts count and alleviates the need 
for time consuming software delay loops and 
port polling. 

Going almost hand in hand with timing 
control is interrupt capability. Timing 



WEST COAST COMPUTER FAIRE 



403 



control frequently involves interrupting 
the processor to execute a specific task, 
i.e., time-of-day computation. Also, since 
single chip controllers are usually used 
in real-time asynchronous systems, inter- 
rupt capability is often mandatory to 
respond quickly to asynchronous events. 
Interrupt capability is code efficient 
since it eliminates the need for lengthy 
software polling loops. 

There are times when neither the on- 
chip memory nor I/O is sufficient for the 
application. For these times, an expansion 
bus should be provided. This bus should 
typically have a multiplexed address and 
data structure to save valuable package 
pins. It should provide a microprocessor- 
like structure to allow interfacing to 
standard RAM and ROM/EPROM. It should also 
allow the use of intelligent peripherals 
such as USARTs and PPIs to supply functions 
the controller does not have time or code 
space to implement. 

The final characteristic is the one 
which has the greatest impact on the 
hobbiest: compatible ROM and EPROM 
versions. At least two manufacturers are 
producing, or are about to produce, EPROM 
equivalents of their ROM controllers. The 
ROM versions are for high volume production. 
However, users are usually reluctant to 
commit code to ROM before it has been fully 
debugged. To allow the complete debugging 
of both the hardware and software, the 
EPROM equivalents were developed. Now the 
user can develop his hardware and software 
using the EPROM version and know it will 
still work once committed to ROM. This 
EPROM/ROM compatibility is a significant 
asset to the high volume user. 

It is this compatibility byproduct 
which is a boon to the hobbiest. Using 
the EPROM based single chip controllers, 
specialized hardware and software can be 
developed for applications with a volume of 
one. This can be done at a cost signi- 
ficantly lower than what would be required 
utilizing a microprocessor based system. 

The Intel 8748 

Let's look at one particular micro- 
computer, the Intel 8748, to see how 
these control oriented characteristics are 
actually implemented. First, let's discuss 
the 8748 's general features. 

Key features of the 8748 are: 

1. Single 5v supply 

2. 2.5 ys cycle time - all instructions 



BOX 1579, PALO ALTO CA 94302 



execute in 1 or 2 cycles 

3. 96 instructions - 70% single byte 

4. 1Kx8 UV erasable/programmable program 

memory - single pulse programming 
and single location programming 

5. 64x8 RAM data memory 

6. 26 I/O lines 

7. 8 bit interval timer/event counter 

8. single level interrupt 

9. easily expanded memory and I/O - 

multiplexed bus 

10. on-chip clock generator - xtal , or RC, 

or LC 

11. single step function 

The 8748' s resident program memory 
consists of 1024 words 8-bits wide which are 
addressed by the program counter. This memory 
is UV erasable and user programmable. 
Individual words are programmed with a single 
programming pulse. There is no restriction 
on how many words may be done during « pro- 
gramming session. Three locations in the 
program memory have special importance; 
locations 0, 3, and 7. Reset vectors the 
program counter to location 0. An external 
interrupt vectors the program counter to 
location 3. And a timer interrupt causes 
a vector to location 7. 

While the resident memory is IK bytes, 
the 8748 program counter allows expanded 
addressing up to 4K bytes. External 
R0M/EPR0M furnish the additional memory by 
way of the expansion bus which is discussed 
shortly. 

The resident data memory is organized 
as 64 words by 8 bits. All 64 locations are 
indirectly addressable through either of two 
RAM pointers which reside at addresses and 
1 of the RAM array. In addition, the first 
8 locations (0-7) of the array are designated 
as working registers. These registers are 
directly addressable and are usually used to 
store frequently accessed intermediate re- 
sults. Locations 24-31 are also designated 
as a second set of working registers. These 
two sets of working registers are selected 
using a Register Bank Switch instruction. 
This second bank may be used as an extension 
of the first bank of may be reserved for 
use during interrupt service routines. The 
first two locations in the second bank also 
serve as RAM pointers for indirect addressing. 



WEST COAST COMPUTER FAIRE 



404 



Of course, if the second bank is not used, 
those locations are still addressable as 
general purpose RAM. RAM locations 8-23 
serve a dual purpose in that they contain 
the program counter stack during sub- 
routine calls. This provides a maximum 
nesting of 8 subroutine levels. If less 
than 8 levels are used, the remaining stack 
locations are available as general purpose 
RAM. 

Since the RAM pointers are 8 bits wide, 
they are capable of addressing 256 RAM 
locations. If necessary, this additional 
RAM may be easily added thru the expansion 
bus. 



The 8748 contains 26 lines which can 
be used as either input or outputs. These 
26 lines are arranged as 3 8-bit ports plus 
2 test inputs. Ports 1 and 2 have identical 
characteristics. They are called quasi- 
bidirectional. This structure allows each 
individual line to serve as an unlatched 
input, a latched output, or both, even 
though the outputs are statically latched. 
The third 8-bit port is BUS. BUS is a 
true bidirectional port with associated 
input and output strobes. If bi direction- 
ality is not needed, BUS may serve as 
either a non-latching input port or a 
statically latched output port. Input and 
output cannot be mixed as with the other 
ports however. 

BUS also forms the expansion bus 
allowing interface to external RAM, ROM/ 
EPR0M, and peripherals. Four control 
signals are provided: RD {Read), WR 
(Write), PSEN (Program Store Enable), and 
ALE (Address Latch Enable). When used for 
expansion, the BUS lines (DB0-7) are 
multiplexed with address and data. ALE 
provides a means for external circuitry to 
de-multiplex the bus when standard RAM, 
R0M/EPR0M, and peripherals are used. 
Multiplexed combination peripherals such 
as the 8155 Combination RAM/I/0/Timer and 
8755 Combination EPR0M/I/0, interface 
directly. PSEN is used to enable external 
program memory. RD and WR are the normal 
control lines for RAM and peripherals. 

The TO and Tl pins serve as testable 
inputs. These pins allow inputs to cause 
program branches without the necessity to 
load an input port into the accumulator. 
TO also serves as a clock output whenever 
an ENTO CLK instruction is executed. Tl 
serves as the event counter input when the 
on-chip counter is used in that mode. When 
neither of these special modes are being 
used, TO and Tl are general purpose test- 
able inputs. 



BOX 1579, PALO ALTO CA 94302 



The INT (INTerrupt) pin is another test- 
able input. It may serve a function identical 
to TO and Tl or it may be used as an interrupt 
input in the traditional sense. In the 
interrupt sense, activating INT causes a 
"jump to subroutine" to location 3 in the 
program memory. As in any CALL, the program 
counter and status word are saved on the 
stack. Location 3 generally contains an 
unconditional jump to the interrupt service 
routine. At the completion of the routine, 
a RETR instruction is executed to return 
the program to its pre- interrupt location. 
Of course, the instruction set contains 
instructions to disable and enable inter- 
rupts under software control . 

The final hardware element to discuss 
is the on-chip timer/counter. The 8-bit 
counter is presettable and readable 
through the accumulator. Instructions are 
provided to load, read, start, and stop 
the counter. The counter contains an over- 
flow flag. This flag is set whenever the 
count raps around from FFH to 00H. The 
flag may be tested or used as an interrupt 
source. A counter interrupt vectors the 
program to location 7 in the program memory. 
The counter interrupt output is internal- 
ly OR'd with the external interrupt pin, 
INT. The counter can be configured to 
operate as either an event counter or as 
an interval timer. These modes are 
selectable via the software. In the 
event counter mode, the Tl input supplies 
the events to be counted. In the inter- 
val timer mode, the internal clock (ALE) 
is prescaled by 32 and is used as the counter 
input. In either mode, the load, read, 
start, and stop instruction control the 
operation of the counter. 

Now that the hardware has been 
discussed, left look at a small subset of 
the instruction set which illustrates the 
8748' s instruction set efficiency in 
control applications. 

The 8748 contains a comprehensive set 
of single bit manipulation instructions. 
These instructions apply to the accumulator 
as well as the output ports. The output port 
instructions are representative. To manipulate 
a bit in an output port, there are AND and 
OR port instructions. These instructions 
utilize a mask to define which bits are to b- 
set or reset. For the AND instruction, the 
mask contains a where a bit is to be reset 
and a 1 where no change is desired. In the 
OR instruction, the mask contains a 1 where a 
bit is to be set, and a for no change. 
Thus individual bits in any port being used 
for output may be set or reset using these 
instructions. For input port bit testing, 



WEST COAST COMPUTER FAIRE 405 



the port is first read into the accumula- 
tor. The instruction set includes 
instructions to jump on the condition of 
any bit in the accumulator. One of these 
instructions is then executed. Thus the 
condition of switches can be read and the 
appropriate action taken. Also included 
is an instruction for n-way branches based 
on the contents of the accumulator. 
The contents of the program memory location 
pointed to by the accumulator are sub- 
stituted for the lower 8 bits of the 
program counter. This results in an 
indirect jump within a page of program 
memory. 

Loop control is accomplished with 
the DJNZ instruction. This instruction 
implements a decrement and jump if not 
zero function. It may be applied to the 
contents of any working register. This 
instruction saves code space and shortens 
the timing spent in various software loops. 

The MOV P3 A,@A instruction eases 
look-up table handling. This instruction 
uses the accumulator as the offset to 
fetch a byte from page 3 in the program 
memory. This effectively allows the CPU 
to "look-up" the corresponding code (an 
ASCII character, for instance) in a single, 
code-efficient operation. 

Special instructions are provided for 
BCD and binary arithmetic. The DA A 
instruction decimally adjusts the accumu- 
lator, SWAP A swaps the two 4-bit nibbles 
of the accumulator. And the XCHD instruc- 
tion exchanges the lower nibbles of the 
accumulator and any working register. 

This completes our discussion of 
some hardware and software details of 
the 8748. 

Application Example 

An application example was given as 
part of the presentation. 

Conclusion 

This presentation has hopefully been 
an introduction to the relatively new 
world of single chip microcomputers. We 
have covered the general characteristics 
desirable in single chip microcomputer 
used in control oriented applications. And 
as an example of one such controller, the 
Intel 8748 was discussed. 



BOX 1579, PALO ALTO CA 94302 



THE DISYSTEM: A MULTIPROCESSOR DEVELOPMENT SYSTEM 
WITH INTEGRATED DISC-ORIENTED INTERCONNECTIONS 

Claude Burdet, Systemathica Consulting Group, Ltd. 
4732 Walllngford St., Pittsburgh, PA, 15213, (412)621-8362 



Abstract 



The microcomputer architecture of 
the DISYSTEM features innovative solu- 
tions to several limitations — 8-bit 
capacity, 64K maximal memory, fixed 
addressing — of the 8080 microprocessor 
family. The modular design of the main- 
frame is especially suited for implemen- 
tation of business and industrial ap- 
plications on turnkey systems. It also 
furnishes a possibility to expand an ex- 
isting microcomputer system Into a pow- 
erful parallel processing configuration 
which will, In effect, aerform 16-blt 
multi-byte operations. 



Section 0.1 Overview 



This article describes the general 
structure of a new cype of microproces- 
sor based computer system; one of its 
distinguishing features lies In the use 
of two processors which communicate 
through a linkage module to become" a 
versatile dual CPU, operating In paral- 
lel processing mode, or independently 

from one another In multiprocessing 

mode (see Appendix A). 

The building blocks of the DISYS- 
TEM mainframe are described in Section 
1: two single board computers, and a 
communication board comprising linkage 
and arbitration modules with the PD 
controller. 

Section 1 also presents a special 
memory design for Improved compact 
storage and better usage of memory 
banks through dynamic addressing. A 24- 
bit addressing scheme Increases direct 
RAM/ROM access to a maximum capacity of 
several megabytes, along with a sharing 
scheme for access of the same memory 
banks by both CPUs. 

In Section 2 several typical hard- 
ware configurations are listed, illus- 
trating the modular versatility of the 
hardware. A fully expanded DISYSTEM 
operates as a virtual machine using 
special system commands to define dif- 
ferent types of operating configura- 
tions of the dual processor system: two 
I independent CPUs, one parallel proces- 
1 sing dual unit, or various Master-slave 

V 



multiprocessing configurations. A multi- 
processing flow chart illustrates the 
virtual machine's ability to change 
structure at each instruction; these 
soecial commands are used to define the 
state of the virtual machine and can be 
viewed as an extension of the instruc- 
tion set of the 8080. 

The DISYSTEM linking approach 
introduces new programming possibil- 
ities In the 8080 family. With Its 
two CPU chips the virtual machine is a 
16-blt computer whose characteristics 
differ from those of conventional 16- 
blt microprocessors — In fact, depend- 
ing on the application and the soft- 
ware, double 8-bit parallel proces- 
sing can be superior to 16-bit arith- 
metic. 

0.2 Introduction 

The DISYSTEM was originally devel- 
oped at Systemathica to fill a gap in 
the computer industry. Off-the-shelf 
microcomputer systems do not have the 
kind of power and hardware versatility 
required for OEM development of turnkey. 
systems in the small to medium size 
range. The 808OA Is chosen because it 
is a well known chip with the best 
speed-to-cost ratio; as a result, the 
DISYSTEM delivers minicomputer oerform- 
ance at the price of micros. 

A wide range of hardware options 
are built into each DISYSTEM board, so 
that the same standard element can be 
used for a variety of different hard- 
ware applications without additional 
interface boards and modifications. 
This contributes to hold turnkey sys- 
tem development costs to a minimum and 
to guard against premature obsolescence 
For example, DISYSTEM memory units are 
designed to ©Derate with either 8-bit 
or 16-blt systems so that the substan- 
tial investment represented by a large 
memory unit can be preserved when a 
system is upgraded from an 8-bit to a 
16-blt CPU. 

The next objective of the DISYSTEM 
oroject is one of technical Innovation 
for a low cost system with features 
found only in large systems, putting: 



WEST COAST COMPUTER FAIRE 



406 



BOX 1579, PALO ALTO CA 94302 



the accent on three areas: intelligent 
control of peripheral devices (see Ap- 
pendix B), increased size and better 
utilization of memory space, and faster 
number-crunching and file management by 
the processing unit. 

The result is: a new single board 
computer concept with larger memory and 
I/O capability; a multi-megabyte memory 
box with dynamic addressing; a dual, 
parallel-processing, Central Processing 
Unit which simultaneously operates two 
microprocessors; and a super-intelli- 
gent Floppy Disc controller with built- 
in I/O module and DMA for temporary 
storage of large files. 

The question of hardware and soft- 
ware compatibility is one where Sys- 
tematica differs most from other manu- 
facturers. DISYSTEM architecture is 
largely universal: it interfaces di- 
rectly with a variety of different bus 
structures, such as Intel's MDS or SBC, 
and S-100 standards. The same philoso- 
phy applies to the software. In addi- 
tion to software packages specifically 
developed for the DISYSTEM to take ad- 
vantage of its parallel- and multi- 
processing capability, any software 
written for the 8080 family will run 
on DISYSTEMS Including popular disc op- 
erating systems such as ISIS or CPM. 

The motivation behind the devel- 
opment of the DISYSTEM Is a natural 
consequence of the need for better 
overall performance of small but rela- 
tively powerful systems (usually disc 
oriented). The intrinsic speed of a 
processor Is often much less relevant 
than one assumes; In an Interdependent 
system, speed Is limited by the slowest 
component, and this is almost never the 
processor Itself. I/O devices are much 
slower and should be given particular 
attention — floppy discs also fall in 
this category. Overall processing effi- 
ciency of a disc-oriented system there- 
fore requires at least two processors: 
a Host CPU for main processing and num- 
ber crunching, and a sloave CPU for 
handling the peripheral devices. Micro- 
computers presently offered on the mar- 
ket are either of the single processor 
kind or contain a second processor 
which is permanently dedicated to a 
specific peripheral task. The DISYSTEM 
architecture, on the other hand, main- 
tains complete multiprocessing symmetry 
for increased programming flexlbiliby, 
including the possibility to simul- 
taneously service several I/O devices 
(viz. floppy disc, terminal and print- 
er). This introduces a much higher 
level of peripheral Intelligence than 
could be attained with a dedicated 



slave processor. 

The dual 8-bit processing struc- 
ture of the mainframe rivals conven- 
tional 16-bit processors through its 
versatility: l'6-blt arithmetic is ob- 
tained in the form of a double-byte 
word where each byte is processed on a 
different processor; the hardware links 
are used primarily to convey "carry" 
signals. Alternately, the dual machine 
can be set up for parallel programming 
where both processors may execute dif- 
ferent operations while communicating 
through an 8-bit channel. This dual 
CPU displays more than twice the power 
of a single CPU chip due to new soft- 
ware options arising from the byte 
oriented link which is, in fact, a new 
register shared simultaneously by both 
microprocessors . 

DISYSTEM hardware also Interfaces 
other existing microcomputer systems; 
small system owners can upgrade their 
facilities towards 16-bit processing 
and intelligent peripheral control 
without fundamental changes to their 
present Installation. 

Section I The DISYSTEM 

The overall architecture of a 
DISYSTEM is shown in Fig. 1. It 
features two main processors which 
function as independent microcomputers, 
sharing the same floppy disc and mem- 
ory; alternately, each processor can 
operate as a slave to the other, con- 
verting the floDpy disc controller 
into a super-intelligent device. Con- 
figuration changes are under software 
control, and processor assignment can 
be dynamically reconfigured using 
commands of the DISYSTEM extended 
Instruction set. Thus the dual CPU 
operates as a virtual machine which 
can become any of several machine 
tvDes through an internal command. The 
following configurations represent the 
basic options which can be chosen by 
the virtual machine for either CPU 
(see Section II for an example). 

1.1 DISYSTEM Architecture 

The single-board computer concept 
is critical to the multiprocessing 
design of the DISYSTEM. The various 
standard configurations listed below 
represent different phases defined by 
the software during program execution. 

Configuration CI ) This is the 
basic single board processing config- 
uration. A micro-unit operates alone 
with its 8K RAM/ROM on-board memory 



WEST COAST COMPUTER FAIRE 



407 



BOX 1579, PALO ALTO CA 94302 



and through its on-board I/O. The main 
bus Is cut off by "floating" the cor- 
responding drivers to the high Impe- 
dance state. In this mode the micro- 
unit will typically perform minor sat- 
ellite processing tasks such as ed- 
iting, formatting, or word processing. 

Configuration C2 ) In Fig. 1 each 
micro-unit is connected to a memory box 
(shown Immediately below the micro- 
unit). When the micro-unit controls Its 
off-board bus, it has direct access to 
this memory box, becoming a fully ex- 
panded single processor microcomputer. 
The DISYSTEM Includes two such com- 
puters which can operate Independently. 
Communication between the two systems 
may occur through a latched 8-bit com- 
munication port; data transfer Is then 
performed In handshake mode. At all 
times a status word can also be read by 
either subsystem, indicating the cur- 
rent status (I.e. configurations) of 
the entire DISYSTEM. 

Configuration C3 ) This is the 
basic configuration of a disc oriented 
microcomputer system. A micro-unit 
gains access to the floppy discs by 
turning on the appropriate buffers of 
the Floppy Disc module. The FD 1771 
chip automatically handles all primary 
disc functions, Including a Cyclic 
Redundancy Check, while the CPU Is ded- 
icated to' servicing the FD 1771. Since 
disc operations are slow (milliseconds 
range ) as. c ompare d t o_ the CPU ( mi cr o- 
seconds range), overall performance of 
a single CPU-disc system is reduced due 
to the inherently slow procedures of a 
disc operating system. 

Configuration C*Q The buses from 
both sides may be linked and become one 
by turning on the arbitration and mem- 
ory cross-access buffer/drivers. To 
avoid conflict, one of the micro-units 
is then "floated" and constrained to 
on-board operation, while the other now 
has access to both memory boxes (I.e., 
120K of memory). The 8080 address 
structure only allows a maximum of 64K 
of direct addressing, but a special 
Virtual Memory assignment module is 



used to expand on-line memory address- 
ing. This also permits a DMA type of 
data transfer between the CPUs of (up 
to) 32K In less than 10 microseconds, 
I.e., more than 100,000 times faster 
than a conventional memory data 
transfer. 

Configuration C5 ) Here one CPU 
has both memories and the FD controller 



(i.e. Configuration C3 and C4 com- 
bined), while the other CPU is in 
Configuration CI. 

DISYSTEM hardware is flexible 
enough to incorporate other micro- 
processor systems as one or both of its 
linked CPUs'. Configuration C3, for 
example, Is a super-intelligent disc 
controller which can be connected to 
an existing microcomputer (not nec- 
essarily 8080 based). 

Bus Structure There are two 
separate buses, linked by the arbi- 
tration board; access to and from the 
buses is through tri-state buffers 
with plenty of power for noise reduc- 
tion. Each memory box also possesses 
an Internal bus with the same charac- 
teristics . 

1.2 Micro-unit (8080-MU-1001 board) 
see Figs. 2 and 7 

This single computer comprises 
the following modules: 

Central Processor Module Consists 
of an 8080 CPU set (8080 CPU, 8228/38 
controller, 823^ clock driver, 2.o432 
MHZ clock) and associated logic. 

I/O Module Two serial ports (In- 
dependent 8251 USART) each with se- 
lectable Baud rate varying between 75 
and 19,200. One can operate either a 
2 0ma current loop, an RS 232 CRT 
t e rminal , or both s Imult arie ousTyY "The" 
I/O also contains six Independent 
parallel 8-bit ports organized in two 
8255 chips. A pair of 8216/26 buffer/ 
drivers Is provided for either output 
or Input buffering. 

RAM/ROM Memory Module With up to 
4K of static RAM (21L02) and up to 4K 
of ROM (2708), the micro-unit is well 
equipped to perform most satellite 
processing tasks. The memory module 
also contains an automatic start-up 
relocation submodule which sets the on- 
board 8K block of memory at any of the 
00, 20, 40, 60, 80, A0, CO, or E0 
address boundaries. ROM Is always 
relocated to the top, RAM to the bottom 
of the 8K page so that all on-line RAM 
remains continuous. 

Bus Buffer/Driver Module All 
address, data, and control lines en- 
tering the micro-unit are buffered; all 
signals leaving the micro-unit are 
boosted by powerful drivers (8097 type 
or 8216/26 with a fan-out of up to 30 



WEST COAST COMPUTER FAIRE 



408 



BOX 1579, PALO ALTO CA 94302 



TTL loads) . 



1.3 Memory Box (for 8- or 16-bit 
words, up to 128K words) see Fig. 6 

The DISYSTEM contains two 64K RAM/ 
ROM memory boxes which may be organized 
either as two (physically) separate 
subsystems or as one single unit total- 
ing 128K. In any case, RAM is placed on 
16K boards (2102-M-816) where each 8K 
RAM block can be Individually assigned 
to one or the other CPU. A single sys- 
tem command will reconfigure the entire 
memory so that, In effect, each CPU has 
direct access to a 128K workspace. 

A memory box plugs Into the ad- 
dress and data bus of either side of 
the DISYSTEM (see Pig. 1); CPU #1 
accesses memory box #2 through the mem- 
ory cross-access module of the arbitra- 
tion board; similarly for CPU #2 and 
memory box #1. Thus, each CPU has 64K 
of natural memory and an additional 64K 
of "virtual" memory. Virtual memory 
allocation Is not limited to 128K: 
several megabytes of RAM or ROM can be 
appended In this manner, connecting 
several memory boxes In parallel on 
either side. This spacious memory de- 
sign has been developed to allow' future 
use of new memory technologies, such 
as low cost bubble devices. It also 
allows several (more than two) systems 
to share a joint ROM source or a" 64K 
joint RAM workspace (scratch pad). 

1.4 Mother Boards (2102-M-107X) 



see Fig. 6" 

DISYSTEMS are usually mounted on 
two universal mother boards which ac- 
commodate 4 memory boards and 4 system 
boards. Memory boxes are also available 
as ^ separate units (a 64K unit or a 128K 
unit), with or without virtual memory 
logic which is wired onto the mother 
board. 

The system mother board Is univer- 
sal in the sense that any bus line can 
be (jumper) rerouted to any other pin 
of a connector so that DISYSTEMS may 
incorporate boards from other manufac- 
turers (0.156-Inch spacing). A wire- 
wrap area and up to 30 (16-pin) DIP 
positions are provided for user-de- 
signed system implementations or signal 
conversion. The main puroose of this 
universal mother board Is to ensure 
compatibility with other microcomputers. 
It will, in particular, allow one to 
generate S-100 bus signals for direct 
interface of a memory box, a f loopy 
disc controller, or a DISYSTEM Con- 
figuration C3 (super-Intelligent con- 



troller) with an S-100 microcomputer. 
There are also additional slots" be- 
tween standard connector positions; 
thus, If space and ventilation are not 
a problem, DISYSTEM mother boards will 
accept additional boards. 

1.5 Arbitration and FD Controller 
Board see Figs. 3 and 4 ~~ 

FD Controller Module Tri-state 
drivers govern the access to the con- 
troller's internal bus from each CPU. 
The controller Is seen by the CPU as 
an I/O device which can be referenced 
as BO to BF; all special commands to 
the FD 1771 are triggered by such I/O 
commands. All signals to the disc 
drives are powered by ODen-collector 
logic. 

Status Latch Module A set of 10 
fully independent flic/flops are used 
to record the current status of the 
controller. It Is collected in one byte 
of information which can be inspected 
by either CPU at their request (see 
Table 1). There is also one pair of 
flip/flops attributed to each CPU for 
handshake communication. 

Data Latch Module Data communica- 
tion between both microcomputers is 
handled by a pair of 8-bit latch/driv- 
ers. In interrupt or handshake mode, 
each byte is latched by one micro-unit 
and subsequently read by the other. In 
cross-access DMA mode, the ports act as 
transparent buffers. All system control 
signals are accompanied by a message 
bvte which is automatically latched in 
the data communication ports, at the 
disposal of the other micro-unit (see 
Table 2). 

Data Separator The FD 1771 pos- 
sesses an Internal data separator which 
may be used; however, this is not rec- 
ommended and, for added reliability, 
the FM serial data/clock line is ore- 
sented to an external data separator 
In the controller module. 

1.6 Interrupt Structure 

The Interrupt structure of the 
DISYSTEM Is completely symmetrical and 
under software control by either CPU. 
There are three Internal Interrupt 
sources: CPU #1, CPU #2, and the con- 
troller chip FD 1771. Over 200 Internal 
and external interruqt calls may be 
serviced. InterruDts between CPUs may 



WEST COAST COMPUTER FAIRE 



409 



BOX 1579, PALO ALTO CA 94302 



be inhibited by a system command in or- 
der to assure absolute priority to the 
floppy disc controller during disc data 
transfer. Interrupt calls and acknowl- 
edgements are recorded in the status 
latch, so that no ambiguity may occur. 
In addition to the hardware signal, 
each interrupt is accompanied by an 
8-bit message (latched by the caller), 
which contains the priority and identi- 
fication of the requested service. Each 
CPU can entertain over 200 individual 
interrupt calls with detailed priority 
management and associated service vec- 
tors. Entry points are listed in a 51^ 
byte .lump table (In RAM or ROM) which 
is itself directly referenced by the 
(RST 7) hardware call (see Fig. 5). 
Since it is controlled by two proces- 
sors (not merely an Interrupt controller 
chip), this scheme can easily be cas- 
caded to accomodate arbitrarily many 
Interrupt services. The DISYSTEM Inter- 
rupt structure also accomodates Inter- 
rupt signals from external devices. 
Such Interrupt calls are presented to 
the same priority manager whose in- 
dividual service vectors eliminate the 
need for separate Interrupt management. 

Se ction II Operations 

During the course of its opera- 
tions a DISYSTEM will continuously 
change structure, assuming any of the 
Configurations C1-C5; ...a system command 
Is required for each change of config- 
uration. Perfectly symmetrical, this 
architecture replaces the more conven- 
tional master-slave configurations with 
dedicated CPU, offering more possibili- 
ties for hardware and software design 
to increase the efficiency of the total 
system. The example described here 
shows how the virtual machine evolves: 
the Host (CPU #1) communicates with a 
complete disc operating microcomputer 
slave. Thus the main processor need not 
be concerned with file management since 
his reauests to the slave subsystem can 
be Issued at the file name level. Fur- 
thermore, virtual memory allocation 
allows the Host to access disc files In 
a time comparable to RAM access time. 
All DISYSTEM commands have I/O names 
and no memory location need be reserved 
for internal activities. 

II . 1 Example (see Appendix C, Table 3) 

Consider the following installa- 
tion: 

Peripherals serviced by CPU #1: 
WEST COAST COMPUTER FA1RE 



-CRT at 9600 Baud 
-Cassette taDe unit at 300 Baud 
serviced by CPU #2: 

-Teletype at 110 Baud 
-Line printer at 4800 Baud 

The teletype and printer are ^ serv- 
iced on a time sharing basis, similar- 
ly for the CRT terminal and the tape 
unit. 

ROM Both ROM #1 and ROM #2 are 
automatically relocated to page F0-FF 

(last 4K). t 

-Rom #1 contains a start-up moni- 
tor and utility routines, cas- 
sette tape operating system, and 
a smart CRT editor; the 4K on- 
board RAM buffer is used as a 
scratch pad (that's more than two 
full CRT screens! ) . 
-ROM #2 contains a start-up moni- 
tor, and a printing editor for 
both the teletype and the line 
printer; thus micro-unit #2 can 
operate as an independent sat- 
ellite with a 4K on-board RAM 
buffer. 

System RAM #1 memory box = main 
programs and workspace area. 

#2 memory box = disc 
operating system and file storage area. 

A typical multiprocessing chain of 
operations Is described In Table 3; in 
Its initial status, the virtual machine 
consists of two independently- running. 
CPUs, each with its own memory, i.e., 
as In the parallel programming Con- 
figuration C2. Numbers In () Indicate 
the sequence of events . 

This example also presents an 
Illustration of virtual memory opera- 
tions. The memory area ADDR occupies 
the same physical location (in memory 
box #2) during the entire process, but 
It Is referenced either as natural 
memory by CPU #2 during phase 4 or as 
virtual memory by CPU #1 during phase 
7. Instead, a double DMA operation 
could be made by CPU #1 to transfer the 
data block ADDR into memory box #1 and 
back. The method used in the example, 
however, is much faster , as CPU #2 is 
engaged in on-board processing during 

phase 7. .. „ , 

Disc files appear, to the host, 
to reside in RAM. The only requirement 
for this is that the fetch request be 
made In advance; but In view of the 
fact that the FD controller has access 
to as many memory banks as needed, this 
Is no severe restriction— disc file 
requests can be timed so that CPU m 



410 



BOX 1579, PALO ALTO CA 94302 



has enough time to load the file into 
virtual memory before CPU #1 issues an 
actual data reference within that file. 
File access time now becomes essential- 
ly the same as RAM access time. Thus 
the use of virtual memory banks has 
much the effect of converting a floppy 
disc into fast memory. 

In Table 3, communication between 
CPUs is interrupt driven, and multi- 
level nested interrupt calls may occur 
during multiprocessing. But the' proces- 
sors will automatically resume their 
"interrupted" task immediately after 
the interrupt has been serviced, so 
that little overhead is required to 
control the flow of operations. 

The "program" is a straightforward 
application of the improvements built 
in the DISYSTEM. It shows that virtual 
memory operations eliminate lengthy 
memory-to-memory data transfers, and 
that to a large extent they give a RAM 
flavor to disc files. The importance of 
such improvements need not be empha- 
sized to the user of disc oriented 
microcomputers . 

This example was chosen because it 
demonstrates the super-intelligence of 
the FD controller system, i.e., the 
half of the DISYSTEM which is in Con- 
figuration C3. In the DISYSTEM, it is 
linked to a Configuration C2, but, as 
such, it will yield th.e same improve- 
ments when combined to any microcom- 
puter system. 

Further multiprocessing orogram- 
ming details, parallel programming 
routines, multibyte arithmetic func- 
tions, and other softwrre possibilities 
of the DISYSTEM are described in Refer- 
ence 3 . Some standard software pack- 
ages are furnished with DISYSTEMS" al- 
lowing the user to take advantage of 
the parallel and multiprocessing mode. 
Application software packages include 
large scale linear programming, simu- 
lation programs as well as business 
programs. DISYSTEM related software and 
programming methodology can be ob- 
tained directly from the manufacturer. 



Conclusions 



Building a system with off-the- 
shelf components is a difficult task as 
soon as a certain level of complexity 
has to be reached; many microcomputer 
boards are readily available on the 
market, but hardware compatibility is 
not as pure as magazine ads make one 
believe. The major difficulty lies in 
the system design area. Off-the-shelf 
boards are fine as "add-on" products, 

L WEST COAST COMPUTER FAIRE 411 



but a collection of them still does not 
constitute a sound concept for a well 
integrated modular architecture. 

The DISYSTEM architecture follows 
the opposite philosophy: it is one 
integral concept which is capable of 
major extensions in several directions: 
memory, central processing, discs or 
other I/O devices. System expansion 
represents no more than an implementa- 
tion of options already built into the 
hardware and the system commands. 

The development effort centered 
around this principle has Droved suc- 
cessful: the DISYSTEM is one of the 
lowest priced systems, even when com- 
pared to less ambitious personal com- 
puters; and yet, an expanded version 
will hold its rank in the field of 
minicomputers . 

The prices listed below convinc- 
ingly demonstrate this fact. 

The 8080A-MU-1001 single board 
computer is available for $119.00 kit, 
sockets are $15.00 extra; assembled 
$1500.00; the additional chip set with 
CPU, IK UVPROM, RAM, serial port costs 
$110.00. 

The 16K memory board costs $60.00, 
$30.00 for 16K RAM (21L02, 450ns); 
assembled $260.00. The 64K memory box 
motherboard with virtual memory logic 
is $58.00 (kit), $103.00 assembled; 
128K is available for $93.00 kit, 
$185.00 assembled. 

The arbitration and FD controller 
1771-AC-1051 is available at $171.00 
kit, sockets are $25.00 extra, $230.00 
assembled; the additional FD chip set 
is $71.00. 

Standard OEM quantity discounts 
apply. Delivery is 0-45 days. 

Assembled and tested systems are 
priced as follows (disc drives and 
enclosures excluded): 

-64K virtual memory system (450ns) 
$1100.00 

-Microcomputer (Configuration C2) 
with 20K RAM: $520.00 

-Super-Intelligent FD controller 
(Configuration C3) with 36K of 
RAM and disc operating system: 
$1200.00 

-DISYSTEM with 72K RAM: $1950.00 
with 120K RAM: $2600.00 



BOX 1579, PALO ALTO CA 94302 



Appendix A 

The term parallel processing is 
used to characterize a single program 
performing (possibly different) opera- 
tions on several processors. 



Parallel processing example: 

Scalar Product: c = ab 

CPU #1 operations 

c l = a l D l 

c 3 = c l + . a 3 b 3 

C 5 7 C 3 + a 5 b 5 

c n-i' = c n-3 + a n-l b n-l 



ship c 



n 



to CPU #2 



A ppendix B 



Intelligent means that the device 
is accessed through a microprocessor 
based controller; we will also call the 
device super-intelligent when it is 
controlled by a microcomputer system 
with full I/O, a substantial memory, 
and resident operating system. 



Appendix C 

Table 1: Status Word 



Each CPU has permanent access to the 
following status Information: 

Bits and 7: a handshake command has 

been Issued 
Bits 1 and 6: handshake data Is latched 

Remark : Bits and 1 are for data 
transfer from the CPU, and 
Bits 7 and 6 are for data 
transfer to the CPU 

Bit 2: interrupt caused by the other 
CPU or some external device 
3: interrupt stems from the FD 

controller 
4: the CPU has access to the FD 
controller 
Bit 5: the CPU has control over the 
buses on both sides 



The term multiprocessing is used 
here In the restricted sense where 
several machines operate independently 
from one another, occasionally com- 
municating through interrupt calls, 
for Instance. 



Bit 
Bit 



CPU #2 operations 

C D = a D 

C ~ = C + a 2 b 2 



c n-2 = c n-4 + a n-2 b n-2 
c = c n-l + C n-2 



Appendix C 

Table 2: DISYSTEM Bus Controls 

The following I/O commands are used for 

Communication between the Micro-units: 



Hardware function 

OUT DO: send Handshake command byte 
OUT D2-: send Handshake data byte- - 
OUT D4: interrupt other CPU 
OUT D6: return its natural bus to 

other CPU 
OUT D8: disconnects FD controller 

from itself 
OUT DA: CPU disconnects itself from 

Its natural bus 
OUT DC: disable interrupt calls from 

other CPU 
OUT DE: unused 



All these commands Issue a message 
byte which is automatically latched in 
the Data Latch Module. The following 
commands are used to read the appro- 
priate message as well as perform the 
Indicated hardware function. 

Hardware function 

IN DO: read the status word 

IN D2: read the latched data byte & 

clear Handshake flip flops 
IN D^: acknowledge Interrupt; clear the 

Interrupt flip flops and read 

the latched data byte 



WEST COAST COMPUTER FAIRE 



412 



BOX 1579, PALO ALTO CA 94302 



iTahle 2 



continued 



IN D6: 

IN D8: 
INDA: 
IN DC: 
IN DE: 



gain control of both natural 

buses and disconnect other CPU 

from Its natural bus 

gain access to the FD controller 

bus 
disconnect other CPU from its 

natural bus 

enable interrupts from other CPU 
. or an external device 

unused 



Communication with FD controller : 

Hardware function 
OUT BO 



send command byte to controller 
register 

send track ID " " 
send sector ID " " 
send data byte " " 
B7: send configuration byte 
(latched in disc control 
latch): selects drive and 
FD 1771 op code 
OUT B8-BF: unused 



OUT Bl 
OUT B2 
OUT B3 
OUT B4- 



IN BO: read FD controller command 
register 

track 
it it n . 

sector 

" " " data 

force CPU Into wait state, 

until data request signal 

from FD 1771 Can interrupt 

or a reset) reactivates it 

unused 



IN Bl 
IN B2 
IN B3 
IN B4-B7: 



IN B8-BF: 



"Config: 
C2 



CPU #1 

Timing: Operation" 

Main processing, independent 
or parallel mode 



C2:(l): Send FD service request and 

assign other CPU to FD service 
(interrupt call) 



C2:(3): Issue a "fetch FILENAME" re- 
quest, with desired address 
location = ADDR (Interrupt 
with message) 



resume processing * 



WEST COAST COMPUTER FAIRE 



Appendix C 



Table 3: A Multi-processing Applica- 
tion: File update by the 
super-inteligent FD 
controller 



The table below presents the 
flow of major operations and con- 
figuration changes occuring during 
a "file update" procedure. This 
description does not contain all 
Instructions In order to highlight 
main events better than a complete 
program listing. 

It Is assumed that both CPUs 
are linked asynchronously; most 
"acknowledge" interrupt calls would 
be superfluous with a synchronous 
DISYSTEM. 

The label * resume processing * 
indicates that the activity which 
Is taking place at that moment is 
not directly related to the "file 
update" routine. 



CPU §2 
"Config: Timing: Operation" 



C2 



Independent satellite proces- 
sing or main parallel proces- 
ing 



C2: (2a) : Acknowledge (interrupt call) 
C2: (2b): Grab FD controller bus (system 
command DB D8) 



C3: (*»a) : Acknowledge (interrupt call) 
C3:(4b):Get "FILENAME" from the ap- 
propriate disc drive designated 
by the resident disc operating 
system. Store "FILENAME" into 
RAM location ADDR (memory box 
#2) 



413 



BOX 1579, PALO ALTO CA 94302 



^i 



Table 3: continued 



CPU #1 
VConflg: Timing: Operation" 



C2: (5a) '.Acknowledge; request access to 
virtual memory box #2 (inter- 
rupt call) 



Reorganize memory #1 (system 
command D3 00 with message) 
Grab system bus #2 and gain 
access to virtual memory #2 
(system command D3 D6) 
Reorganize memory #2 (system 
command D3 10 with message) 
Process and update "FILENAME" 
at address ADDR In memory #2 
(main program) 
: Reorganize memory #2 (system 
command D3 02 with message) 
: Release system bus #2 (system 
command D3 D6) 

-.Signal to CPU #2 that system 
bus #2 is free (Interrupt call) 
: Reorganize memory #1 (system 
command D3 00 with message) 
Issue a "store FILENAME" re- 
quest (Interrupt with message) 



C2: 


(6a): 


C4: 


(6b): 


CU: 


(6c): 


C4: 


(7a): 


CH 


(7b) 


C2 


.(7c) 


C2 


:(7d) 


C2 


:(7f) 


C2 


:(8): 



C2: (10) -.Acknowledge (Interrupt call) 



C2 



Main processing, independent 
or parallel mode 



CPU #2 
"Config: Timing: Operation" 

C3: (4c) -.Signal "file ready at address 
ADDR" (Interrupt with message) 

C2: (4d):Quit FD control (system 
command D3 D8) 

CI: (5b) Acknowledge (Interrupt call) 
(5c):Release system bus #2 (system 
command D3 DA) 



* resume processing 



C2:(7e):Grab system bus #2 (system 
command DB D6) 



C2: (9a): Acknowledge (Interrupt call) 

C3;(qb):Grab FD control (system 
command DB D8) 

C3: (9c):Store "FILENAME" according to 
the directions of the resi- 
dent disc operating system 

C3: (9d):Slgnal "FILENAME stored" 
(Interrupt with message) 

C2: (ll):Release FD controller (system 
command D3 D8) 



C2: Independent satellite proces- 
sing or main parallel proces- 
sing 



WEST COAST COMPUTER FAIRE 



414 



BOX 1579, PALO ALTO CA 94302 



Appendix D 

Captions for Figures One thru Eight 

Figure 1 Architecture of the -DISYSTEM 

A DISYSTEM consists of two single 
board computers, an FD controller and 
linkage board, and two memory units 
each containing up to four 16K RAM 
boards; all boards are mounted on two 
system mother boards in a single or 
two separate enclosures. 

Each CPU has access to the FD con- 
troller and to both memory boxes, for 
a maximum of 120K of RAM; each also 
has its own on-board I/O and memory 
module. Information Is shared through 
an 8-bit latch and an 8-bit transparent 
communication channel. All commands of 
the DISYSTEM extended Instruction set 
are executed through hardware logic 
for maximum speed. 

Figure 2 Microprocessing Unit (single 
board computer) 

The 8080-MU-1001 board is for 
stand alone operation as well as multi- 
processing. It is an Ideal low cost 
general purpose controller, with 8K of 
on-board memory and multiple serial 
and parallel I/O. Simultaneous service 
of several Independent devices such as 
typewriters or printers converts them 
Into intelligent word processors and 
editors. This micro-unit is available 
fully assembled and tested, as a kit, 
or a bare board, with or without sock- 
ets. It will also operate normally 
without all of Its 1/C ports and mem- 
ory chips for maximum cost efficiency 
In applications requiring less proces- 
sing power. 




Figure 3 Floppy Disc Controller 
Module 



The Floppy Disc controller has 
access to both CPUs and both memory 
units for added programming flexibil- 
ity; It features Its own clock genera- 
tor and is capable of controlling 
either Standard FD Drives or Mini FD 
Drives. The FD controller can be given 
absolute Interrupt priority, disabling 
all other interrupts. A 1771 controller 
chip handles all disc signals, performs 
automatic CRC checks, and has several 
formating capabilities, Including IBM 
formats. 



Figure 4 Cross-Access Arbitration 
Module 

The arbitration module is the 
heart of a DISYSTEM. It combines two 
Independent microcomputers into one 
central processor, ODerating under an 
extended instruction set. The result- 
ing machine then operates either in 
parallel processing mode with 16-bit 
capacity or as an interrupt driven 
multiprocessor. All Address, data, and 
control bus lines are transmitted from 
one system to the other, with an addi- 
tional latched 8-bit bi-directional 
communication channel. The arbitration 
module also provides DISYSTEMS with 
priority interrupt control for over 
200 separate calls with individually 
vectored service. 

Figures 3 and 4 

The FD 1771-AC-1051 board con- 
tains both the floppy disc controller 
and the arbitration module. Tied to a 
micro-unit, It forms a super-intelli- 
gent FD controller system" with Its 
own processor, I/O, and memory. 

Figure 5 Interrupt Service Structure 

The Data Latch furnishes the LSB 
of the Jump Table address to the RST 7 
subroutine (for instance 9A). In turn, 
the jump table delivers the MSB (for 
instance 22 contained in memory loca- 
tion F39A) and the LSB (B7 from loca- 
tion F^9A) of an entry point (I.e. 
22B7) for the requested Interrupt 
service. 

Figure 6 

Memory box unit showing its four 
positions for 16K memory boards (2102- 
M-816), totaling a maximum of 64k 
words. A memory board Is inserted in 
the last slot, displaying two separate 
8-bit 8K banks; thus the memory unit 
can be configured for 8 or 16 bit 
operations . 

Figure 7 

The micro-unit 808O-MU-IOOI with a 
maximum of 4K RAM (21L02), 4K ROM 
(2708), 2 serial ports (8251) and 6 
parallel ports (8255). This single 
board computer also possesses 10 free 
16 DIP positions for dedicated applica- 
tions. 



WEST COAST COMPUTER FA1RE 



415 



BOX 1579, PALO ALTO CA 94302 



wma 



"\ 



Appendix D continued 
Captions continued 



Figure 8 



The disc-oriented microprocessor 
connection board FD 1771-AC-1051 con- 
tains a bus linking module and data 
communication channel (center), a 
floppy disc control module with double 
access (left), and a system command 
logic module (right) which defines the 
state of the dual processor virtual 
machine. 



References 

[1] Intel MDS-800 Microcomputer 
Development System Reference 
Manual, October 1975. 

[2] George A. Anderson and E. Douglas 
Jensen: "Computer Interconnection 
Structures: Taxonomy, Character- 
istics, and Examples," Computing 
Surveys , vol. 7, no. 4, pp. 197- 
213, December 1975- 

[3] Systemathica, DISYSTEM Software 
Development Manual, 1977- 



WEST COAST COMPUTER FAIRE 



416 



BOX 1579, PALO ALTO CA 94302 



sannaow 

39V>INn i!3H10 




CO 

>• 

CO 



X 



o 



UJ 



LU 



o 

on 



UJ 

o 



UJ 

en 



CD 



OTHER LINKAGE 
MODULES 



WEST COAST COMPUTER FAIRE 



417 



BOX 1579, PALO ALTO CA 94302 




WEST COAST COMPUTER FAIRE 



418 



BOX 1579, PALO ALTO CA 94302 



A 




A 



\7 



o 

co 

_i 
O 

C* 

h- 
Z 

O 
u 



CO 



LU 

_l 

_J 0. 

O ~ 
a: x 
i- o 

z 
O 
o 



rH 




TT 




CO C5 

— Q Z 

Q 2 l-H 



o 

u 



a 



I 



Q 



I- 
3 

LU 



< 



CO 

LU 

Z) 

c 

LU 



LU 

_l 

Q 
O 



O 



O 



C/3 



>- 

a. 
o_ 
o 



LU 
LU 



LU 



C!J 



sna ivNaaiNi aamoaiNOo oi saaAiaa / saaddna aivis-iai 




^\ _ «? i^ 






I D 3 I 

I L HI I 
I U I 



WEST COAST COMPUTER FAIRE 



419 



BOX 1579, PALO ALTO CA 94302 




FIGURE FOUR : CROSS-ACCESS ARBITRATION MODULE 



V: 



WEST COAST COMPUTER FAIRE 



420 



BOX 1579, PALO ALTO CA 94302 



INTERRUPT SIGNAL 
(HARDWARE) 



) 



DATA LATCH 

(ARBITRATION 
MODULE) 
















MSB 
TABLE 




LSB 
TABLE 






F300 

• 




F400 

• 






• 

• 

F39A 

* 




• 

F4 9A 

• 






F3FF 




F^FF 




JUMP TABLE 














RST 7 SUBROUTINE 




Figure 5 : INTERRUPT SERVICE STRUCTURE 



WEST COAST COMPUTER FAIRE 



421 



BOX 1579, PALO ALTO CA 94302 



■I 



lilllil im^i 



mmtA 




C. Burdet 

The DISYSTEW. . . 

Figure 6: Memory box unit 



C. Burdet 

The DISYSTEM. . . 

Figure 7: micro-unit 
8080-MU-lOO: 



SYSTEMATHICA 





C. Burdet 

The DISYSTEF. . . 

Figure 8: arbitration and con- 
troller board 
FD 1771-AC-1051 



SYSTEMATHICA 



WEST COAST COMPUTER FAIRE 



422 



BOX 1579, PALO ALTO CA 94302 



A POINT-OF-SALES NETWORK 

Samuel A. Holland, Director of Research and Development 
Extensys Corporation, 380 Bernardo Avenue, Mountain View, CA 94040 



A Point-of-Sales network is a clas- 
sic example for implementation of dis- 
tributed processing architecture. This 
paper defines a point-of-sales environ- 
ment in terms of the capabilities that 
are needed to effectively handle the 
information exchange. Next the EX1000 
embodies as its primary architectural 
concept "distributed processing". 
Each of the components in the point-of- 
sales network is then described using 
the EX1000 as a basis. This emphas- 
izes the modularity as well as effic- 
iency of a well designed distributed 
processing system. 

Point-of sale applications with 
computerized systems generally require 
a wide variety of hardware and software 
designs to provide a totally integrated 
system. Some of the factors to be con- 
sidered in point-of-sale systems in- 
clude: 

• Diverse data inputs at the acutal 
point-of-sale: keyboards, cash regis- 
ters, bar code readers, credit card 
inputs, interface to mechanical de- 
vices and totalizers. 

• Ability of multiple point-of-sale 
terminals to access a regional data 
base with input/output capability in 
real-time. 

• Ability to update the information 
bank in the regional data base from 
the point-of-sale terminal with cur- 
rent transaction data along with ab- 
ility to modify the regional data base 
from a corporate home office main-frame 
computer (pricing, inventory codes, ac- 
ceptance and verification data, etc) . 

t Capability to batch stored informa- 
tion in the regional data base to a home 
office system on demand. 

• Ability to easily add and subtract 
remote terminals as required. 

• Human factors particularly at the 
point-of-sale for ease of input, accur- 
acy, and confirmation of entry. 

• Ability for the system's software 
architecture to allow application code 
to be written, entered, and modified. 

• Low capital investment to more easily 



ific considerations lend themselves to a 
distributed processing technique. Under 
such an architectural scheme, the full 
capability of the electronic circuitry 
and associated software can be focused 
on each diverse section of the overall 
system to optimize system capability and 
flexibility while minimizing cost. 

The Extensys EX1000 Computer System 
embodies architectural concepts found, 
before now, only in costly large scale 
computers. The primary concept that has 
been used throughout the EX1000 is dist- 
ributed processing. The EX1000 distrib- 
utes system processing functions to 
those system components that are best 
suited to perform those tasks. This ded- 
icated function type of architecture is 
just coming of age. It is a state-of-the- 
art technology which was prohibitive un- 
til the recent introduction of cost ef- 
fective computational plus control mic- 
roprocessor chips (costing as little as 
$8) along with programmable peripheral 
circuits to perform preassigned tasks. 
Coupling these cost effective products 
with the distributed processing tech- 
niques proven by computer companies such 
as Control Data Corporation, Extensys 
Corporation has been able to provide an 
extremely powerful and flexible system 
in the EX1000. Through the efficient 
use of system components and their mod- 
ular structure, the EX1000 system allows 
system configurations that meet a wide 
variety of particular application needs 
as well as offering expansion capability 
to satisfy increasing usage demands. 

The Extensys EX1000 Computer System 
is ideal for use in a point-of-sales 
network environment. A-l illustrates 
how a point-of-sales network system 
could be designed using the EX1000. The 
use of distributed processing concepts 
allows for the placement of processing 
in those elements which can provide a 
highly cost effective and efficient op- 
eration. The system functions that are 
distributed to the various processing 
elements are: 
• The Home Office System provides data 



justify a full network with maximum cap- retention and processing for the entire 

ability. data base. 

• Record retention considerations. • Regional Systems are used for concen- 

These generalized point-of-sale re- trating data from up to 64 (or more) 
quirements along with installation-spec- terminals within a geographical region, 



WEST COAST COMPUTER FAIRE 



423 



BOX 1579, PALO ALTO CA 94302 



with area data retention as required. 
• Regional Systems also use a Store and 
forward system to communicate periodic- 
ally with the Home Office System, 
f Remote Terminals have intelligence 
for editing and formatting of data. 
Extensys is able to distribute the proc- 
essing requirements of the network sys- 
tem through the proper selection and 
placement of microprocessor elements in 
junction with software to perform and 
control those tasks. 

The Home Office System which retains 
the entire data base, would normally 
consist of a large mainframe computer, 
such as an IBM 370/168, a UNIVAC 1110 or 
a CONTROL DATA CYBER 175. These units 
would have large disk storage capacity 
for entire data base retention. Addi- 
tionally they would be used for statis- 
tical information processing and report- 
ing. 

The Regional Systems would consist 
of an Extensys EX1000 Computer System. 
A typical Regional System is illustrated 
in A-2. It is composed of several re- 
mote terminal processing elements, a 
host or central processor, a system mem- 
ory, disk storage and a local terminal 
processing element. The remote terminal 
processing elements can accomodate up to 
8 remote terminals each. By incorporat- 
ing 8 terminal processing elements, up 
to 64 (or more) remote terminals could 
be serviced by a single Regional System. 
More systems could be added to increase 
the regions capabilities even further 
The flexibility to add or delete termin- 
als allows for the efficient structuring 
of each Regional System to meet current 
as well as future needs. 

The host or central processor is 
used to execute application programs. 
These programs would be executed in the 
system memory with each terminal sharing 
the same programs. System memory modul- 
es can be added , providing from 16K 8- 
bit bytes to 1 megabyte of RAM storage 
to accomodate a wide variety of applica- 
tion programs. The disk storage element 
controls from 256K bytes to 2 megabytes 
of on-line removable disk storage. Add- 
itional disk storage units can be added 
to a Regional System to expand the disk 
storage capacity of a Regional Data Base . 
A local terminal provides the capability 
to monitor the data base and control the 
operation of the system. 

A Remote Terminal is comprised of 
selected EX1000 processing elements. A-3 
illustrates its composition. A Remote 
Terminal consists of the local terminal 
processing element of the associated Re- 
gional System coupled with a communica- 



tions modem. The Remote Terminal has 
enough processing horsepower to be able 
to perform local editing of information 
as well as formatting and compression of 
information to accomplish efficient 
data transfering to the Regional System. 
Software within the Remote Terminal 
could step the person initiating a tran- 
saction through a given set of instruc- 
tions in order to provide ease of oper- 
ation and accuracy of transaction. 

The Flow of Transactions in the 
point-of-sales network system using the 
EX1000 as a basis is depicted in A-4. 
Transactions are inputted at a Remote 
Terminal by keyboard, credit card reader 
or other convenient means. The remote 
terminal with dual microprocessors and 
4K bytes of buffer storage performs ed- 
iting and formatting functions and con- 
centrates the data prior to transmitting 
it via modems to the Regional System. 
The Regional System receives the trans- 
actions through a modem attached to a 
multiplex controller board which has a 
dedicated microprocessor and buffer for 
each modem. The transactions are then 
combined with other transactions on the 
APU-100 processing unit in an 8K byte 
buffer. These transactions are then 
passed to the Regional Data Base through 
the central memory of the system. The 
APU-100 processor then allows the tran- 
saction data to be efficiently transfer- 
red from the RAM buffer and stored on 
the removable disk. 

All transactions would be stored at 
Regional System sites and periodically 
or on demand would be forwarded to the 
Home Office System. This would be accom- 
plished by buffering large volumes of 
transactions off the Regional System 
disk storage through the central memory 
of the system to a communications multi- 
plex controller board. This board then 
passes these transactions to the Home 
Office System via communication lines. 

The Extensys EX1000 Computer System 
is ideal for point-of-sale network en- 
vironments. It incorporates flexibility 
through distributed processing to allow 
for structuring systems to specifically 
meet current needs as well as offers ex- 
pansion capability as the demands on the 
system increase. It provides an effic- 
ient operation since only those proces- 
sing elements that are required for any 
operation are involved , freeing the re- 
maining elements to perform other tasks. 
The EMOS software, in addition to the 
hardware, is distributed throughout the 
complete system for efficeint handling 
of transactions. As a result of the tot 
al hardware/software distribution, only 



WEST COAST COMPUTER FAIRE 



424 



BOX 1579, PALO ALTO CA 94302 



application programs would need to be 
developed. This flexible, efficient 
operation coupled with the cost effect- 
iveness of using microprocessors makes 
the EX1000 an excellent choice for a 
point-of-sales network system. 



POINT OF SALES NETWORK SYSTEM 



HOME OFFICE 
SYSTEMS 



REGIONAL 
DATA 
BASE 




HOME 
DATA 
BASE 



REGIONAL 
DATA 
BASE 



REGIONAL 
SYSTEM 




REGIONAL 
SYSTEM 



Q 




A-l 



WEST COAST COMPUTER FAIRE 



425 



BOX 1579, PALO ALTO CA 94302 



to 

D 
PQ 

< 
Eh 
< 
Q 



O 

CO 
Eh CO 
CO W 
OU 
K Q 

0< 



■ 


CO 




tf 2 


Q 


O O 


« 


Eh H 


O 


< Eh 


CQ 


W E-i 


X 


CU CO 


H 


O 


« 






(N 
I 

< 




WEST COAST COMPUTER FAIRE 



426 



BOX 1579, PALO ALTO CA 94302 



MODEM 



TERMINAL 
PROCESSOR 




KEYBOARD 



REMOTE 
TERMINAL 



A- 3 



WEST COAST COMPUTER FAIRE 



427 



BOX 1579, PALO ALTO CA 94302 



w 

CO 

co 

< 
z 
o 

H 

o 
w 
« 



< 

Z 
H 

s 

w 
w 

O 

s 

8 




« 


CO W 


Oh" « fa 


W O fa 


05 fa CO D 


O fa CO CQ 


CO D W 


wmuw 


W OH 


U W « Sh 


O E-i Ph « 


« >H 


Pu CQ rH ** 


■"3* vo 


O (N O 


00 ON CO \ 


OH 1 ^ 


CO 00 00 


• • • 




s 



co 

§ 

H 
Eh 
U 

CO 

z 



O 

Z 

M 

o 

Eh 
CO 



1 



S 
W 
Eh 
CO 

>H 

CO 

W 
U 

H 
fa 

Cm 
O 

W 
S 
O 

o 

Eh 



P4 








W 








X 








w 








»-) 








04 








H 








Eh 








•J 








D 




CO 




S 




Z 

o 

M 






i 


i 


Eh 
U 






< 






CO 






z 






a 




2 






Eh 


*• 






1 


W 1 


C3 


< 


Eh ! 


Z 




CO ! 


H 




co ! 
I 






•^ 


S 




< 


« 




Z- ! 


o 




o 




fa 




H 








o 








a 


. 







w 




o 




£ 




o 




H 




CO 




tt 




CO 




H 




Q 





<ID 



*g 



WEST COAST COMPUTER FAIRE 



428 



BOX 1579, PALO ALTO CA 94302 



A SHORT NOTE ON HIGH LEtfEL LANGUAGES 
AND MICROPROCESSORS 



by Sassan riazeghi* 
and Lichen tfang 

STANFORD LINEAR ACCELERATOR CENTER 



Abstract 

In this note, some of the practical aspects of bridging the gap 
between high level programming language and computer hardware are 
discussed. Several possible strategies are considered and the method 
of half-compiling-half-interpreting is studied. In dealing .with 
address space limitation (or tight memory situation) and slow speed 
of micro processors running an interpreter, a measurement and 
analysis technique is suggested. This analysis not only gives a good 
estimate of the timing and storage requirement before the actual 
implementation, it also helps to optimize the speed and storage usage 
of the implementation. The note concludes with some results 
concerning the implementation of the programming language PASCAL on a 
family of micro processors. 



The question of high level 
language versus assembly language 
programming is far from resolved, and 
it is unlikely that it .will ever 
be settled to the satisfaction of 
everyone involved. However, it can 
safely oe said: a high level 
language is an essential program- 
ming tool in large scale software 
projects. For large and medium scale 
computers, the major applications that 
nwere written in assemoly language, 
namely system software such as 
compilers, interpreters, operating 
systems and even assemblers, are now, 
to a very large extent, being written 
in nigh level languages. 

In the case of microprocessors, 
the rather primitive nature of the 
instruction sets of these machines and 
their innerent address space limi- 
tation makes them a less desiraole 
target for compiler writers and 
compilers. Nevertheless, starting 



with the first generation of the 
microprocessors there nas been a 
great deal of interest in imple- 
menting existing high level languages 
and even in defining new languages for 
these new devices. 



intended to 
medium or large 
generate machine 
microprocessor. 



* Work supported in part oy the Energy 
Reasearch and Development Adminstra- 
tion under contract £(043)515. 



The early versions of micropro- 
cessor compilers and assemblers were 
run on available 
scale computers which 
code for the target 
These programs, 
generally referred to as cross 
compilers and assemblers, (themselves 
benefactors of the already existing 
software tools on their host 
computers) .were made available to 
the microcomputer programmers through 
time sharing networks or in-house 
host computers, and thus were not 
easily accessible to the small users 
who " had no extra support but their 
microprocessors. 

The resulting pressure from the 
user community prompted the micro- 
processor manufacturers, as well 
as independent software establish- 
ments, to provide resident software 
for the microcomputers. Unfortu- 



WEST COAST COMPUTER FAIRE 



429 



BOX 1579, PALO ALTO CA 94302 



nately, the existing cross compilers 
cannot usually oe used to "bootstrap" 
themselves into a "resident" 
version, and the limitations of the 
microprocessors make the task of 
writing good resident compilers a 
ratner difficult one. An alternative 
approach to tnis problem is the use of 
"interpreters" .which do not try to 
translate the set of actions 
specified oy the user program into 
mechine code, out instead execute 
tnese actions in their own way. 

There are two important charac- 
teristics of the interpreters .which 
make them particularly suitable for 
microprocessors. The first is that 
the hign level language representation 
of a program is generally more 
compact than its assembly language 
form. In other .words, hign level 
languages result in a .denser 
"encoding" of the progranu "The 
famous APL "one-liners" are an extreme 
example of sucn compact encodings. 
The second characteristic is that 
it is generally easier to mimic the 
actions specified oy a program than to 
translate that program into a suffi- 
ciently different language, in 
particular a machine language. An 
ooservation .which supports this idea 
is that interpreters are usually 
much smaller than "full" compilers 
for high level languages. 

Due to these and other similar 
considerations, the first high level 
language .whicn gained widespread use 
on microprocessors was an interpretive 
BASIC. The availability of very 
compact interpreters, as well as the 
simplicity of the language, made it 
tne microprocessors' ("universal" hign 
level language. This is particularly 
evident amongst computer hoooyists 
witn limited resources and little 
concern for speed and (in) efficiency 
of the programs. These interpreters, 
in general, maintain a copy of the 
program in its original textual form, 
with little or no cnange in its repre- 
sentation. Althougn this results in 
ease of modification of the program 
and meaningful diagnostic messages, it 
is still far from optimal in terms of 
the storage requirements, in addition 
to being very inefficient in terms of 
running time. 

Implementing an interpreter or a 



compiler in assembly language is a 
long and tedious project. More- 
over, the work has to be repeated for 
each microprocessor, and more often 
than not, some differences are 
introduced in the underlying high 
level language. The standard method 
of bootstrapping a self-compiling 
compiler (a compiler written in 
the language it implements) into a 
resident compiler appears to be a very 
attractive approach in dealing with 
these proDlems. However, before 
starting any actual implementation, 
some careful planning is needed in 
order to overcome the problem of 
limited memory space. There- 
fore, as an experiment in the 
microprocessor software design, we 
decided to try implementing a 
compiler for the programming 
language PASCAL on a family of 
microprocessors. 

One of the existing PASCAL compi- 
lers, the so called P_Compiler [1], is 
specifically designed to simplify the 
task of generating code for different 
target computers. This is accom- 
plished oy generating code for a 
hypothetical (("universal") Stack 
Machine which is to be mapped into the 
target computer machine code. The 
stack machine is designed to 
simplify the compiler itself [2], [3], 
by leaving the details of the 
(machine dependent) register 
assignment and utilization problem 
to the final implementor. 
Another characteristic of the stack 
machine code (also called "zero 
address" code) is the relatively short 
average instruction length due to lack 
of register specification fields 
within the instructions. For these 
reasons, we adopted a modified 
version of the P_Compiler stack 
machine as our virtual intermediate 
machine, with the idea that this 
machine could be implemented 
(i.e., interpreters written) on a 
variety of microprocessors with 
reasonable efficiency. Table-1 
shows this modified instruction 
set, which basically satisfies the 
following requirements: 

a) The instruction set of 

the I.M., referred to as the 

Intermediate Language (I.L.) , is 

quite small. Many studies of the 

instruction sets of different 



WEST COAST COMPUTER FAIRE 



430 



BOX 1579, PALO ALTO CA 94302 



computers [4J have shown that 
the bulK of the programs are 
composed by only a few different 
instructions, wnich also account 
for a large fraction of the 
program's running time (in 
general, the opcode entropy is on 
the order of 3-4 oits) . But 
instructions are usually an 
integral number of storage units 
and a large number of different 
opcodes tends to increase the 
average instruction length 
(Taole-2, 8080 frequencies). 

b) The I.L. is relatively 
machine independent and it can 
be easily implemented on a variety 
of microcomputers. Even though the 
I.L., as generated by the 
P_Compiler, could be used on the 
target machine in a number of 
different ways (e.g. direct trans- 
lation, macro expansion, etc>), in 
its final encoded form it is 
intended for an interpretive imple- 
mentation. 

c) The level of complexity of 
the instructions represents a 
compromise between the source 
language and the potential target 
machines. To this end, the I.L. 
includes "floating point", "set" 
(as used in PASCAL) and address 
computation instructions, but does 
not provide bit manipulation opera- 
tions such as "Shift", "Rotate", 
and "Bit Test". 

d) The I.M. code is flex- 
iole enough so that it can be 
relocated in memory or divided into 
segments or pages. 

e ) rhe I.L. includes 
provisions for optional 
runtime cnecking so that the 
runtime errors can be easily traced 
to the source statements 
caused them. 



wh ich 



The runtime environment of tne 
I.M. closely resembles that of 
PASCAL and other block struc- 
tured procedural (ALGOL-like) 
languages. Sucn an environment is 
highly useful to the compiler 
writer, and could also be used Dy 
programs written directly in the I.L. 
thereby simplifying tne storage 
management proolem. 



A previous experience in mapping 
the I.L. into IBM 370 code [5] , using 
a moderately optimizing transforma- 
tion, resulted in an average length 
of 4 to 5 bytes per translated 
I.L. instruction. The PASCAL P 
Compiler itself, a 4000 line PASCAL 
program, was translated into about 
15000 i.l. statements. This turned 
out to be equivalent of about 73000 
bytes of the IBM 370 code, and did not 
include the data area required while 
running the compiler. it is clear 
that a direct translation of the I.L. 
into machine code, or even a straight- 
forward mapping of the I.L. into 
the microprocessor's memory, would far 
exceed the available storage on most 
of these machines. 

To deal with this problem, we 
developed a set of programs to trace 
and analyze the I.M. code which 
provide static and dynamic information 
aoout the I.M. instruction set. 
By static information, we mean 

the statistical distribution of 
various instructions in a given 
program as it is loaded into 
memory. Dynamic information, is 
based on the frequency of execution of 
various instructions as the 
program is executed. These 
distributions are obviously program 
dependent and the dynamic properties 
are, in addition, data dependent. We 
considered the P_Compiler itself to 
represent a extreme case in terms of 
size and complexity both as a 
program and as data (while oeing 
compiled) . The p Compiler was 
therefore used as a" benchmark to 
compare different revisions of the 
I.L. with regard to the projected 
size and speed of the encoded program. 

The standard way to cut down on 
tne "opcode space" of the instruc- 
tions is to use some form of the 
Huffman-encoding of the opcodes, in 
wnich the most frequent opcode has 
the shortest representation, 
flowerer, practical considerations, 
such as operand and memory alignment 
requiments, complicate the problem. 
For example, the "LOO" and "LDC" 
(loading variable values or constants 
on top of the I.M. stack) are the 
most frequently used instructions 
(Table-3). The typical "LDC" instruc- 
tion should be able to specify a 
full integer constant (a 2-byte quan- 



WEST COAST COMPUTER FAIRE 



431 



BOX 1579, PALO ALTO CA 94302 



tity) and the "LOD" operation should 
include both a "level numoer" (typi- 
cally in the range to 7) and a 
sufficiently large "offset" field. 
Tnus even with Huff man-encoding , LOD 
and LDC -would still require about 2-3 
Dytes per instruction. In the 
case of the compiler, these instruc- 
tions alone would use up 10-15 K 
oytes of memory. A closer look, 
however, shows that tne operand 
distributions are even more skewed 
than the opcode distribution 
(Table-4) . This suggests tnat, if 
needed, the operand fields 
could also be Huffman-encoded. 
Since the above two instructions 
are also neavily represented in the 
dynamic instruction counts, we decided 
on a fairly simple encoding, 
namely, dividing these into 
different groups, depending on the 
size of the operand. 

For tne "LDC" instruction, .we 
noticed that tne great majority of 
the (integer) constants used in 
programs are positive, and, in the 
case of the P_Compiler, about 30% of 
tnese constants are in the range 
to 31. Thus if we use a 3-oit opcode 
and a 5-^bit operand field, a large 
fraction of LDC instructions could 
be represented oy a new one byte 
instruction. This -was in line with an 
earlier decision to align instructions 
on oyte boundaries but to allow 
operands to cross over oyte boun- 
daries, wnenever this would not 
create a major runtime penalty in 
extracting the operand fields. Like- 
wise, for the LOD instructions, it is 
Known that most of the references are 
to the aosolute Global variables 
(those defined in the main program) 
and the most Local ones (those 
defined in the very procedure in 
whicn tney are oeing referenced). 
The Local variables are, most 
often, simple variables (as 
opposed to "structured" variables 
in PASCAL terminology) and few in 
numoer, so tneir offset value in 
the address field is small. For 
tne Glooal variables, nowever, we 
noticed that a few "hyperactive" vari- 
ables are overly represented in the 
reference pattern. (One can observe 
tnis pnenomenon oy looking at a 
cross reference listing of any 
program, whether .written in assembly 
or high level language.) Reord- 



ering the Global variables 
(performed either by the 
programmer or the compiler) so that 
simple variables precede larger 
(structured) variables and are ordered 
oy their reference frequencies, 
results in a short form (1-byte) 
i"LOD" instruction which can replace 
the majority of the original "LOD" 
instructions. Of course, one has to 
provide the long form of these 
instructions, so that none of these 
decisions impose any restrictions on 
the language. The important point, 
however, is that these long forms 
are not employed frequently enough to 
maKe a significant contribution to 
the program size or execution time. 

The relatively high frequency of 
the procedure call instruction 
"COP." reflects the current trend 
in programming style, which empha- 
sizes modular and structured 
program organization. (The 
P Compiler consists of about 100 
procedures) . The efficiency of 
the implementation of "Call" and 
"Return" mecnanisms thus becomes an 
important factor in the efficiency of 
the overall program. For this reason, 
it was decided to include the 
somewhat redundant "MST" instruction 
which flags tne Deginning of evalua- 
tion of parameters prior to a Call. 
This instruction helps speed up the 
"call" sequence in our actual imple- 
mentation, but it can be removed from 
the instruction set if storage limita- 
tion becomes an issue. The call 
instruction "CUP", however, presents 
a more interesting problem. The 
straightforward implementation of 
this instruction would include the 
entry point address of the Called 
Procedure in the operand field of the 
instruction. By observing that 
there are usually many more Calls 
than Procedures, we concluded that 
procedure names (addresses) were 
good candidates for more compact 
encoding. Using a procedure numoer 
(name) with a much smaller range 
than a procedure address, we can use 
a 2-oyte "CUB" instruction, instead of 
the 3^oyte full address version. 
Furtner examination of the call 
instruction reveals that not all the 
procedures are alike, since only a 
few procedures are the target of 
the oulk of the call instructions 
(Table-5). Having set aside some 



WEST COAST COMPUTER FAIRE 



432 



BOX 1579, PALO ALTO CA 94302 



4-oit opcodes in the beginning, 
we chose to use smaller 
numbers (shorter representation) for 
the most frequently called proce- 
dures- and larger ones for the less 
popular ones. This encoding allows up 
to 16 procedures to oe called by 
1-rDyte call instructions (about 85% of 
the procedure calls in the compiler) , 
while the rest of them are called 
oy the 2->oyte call instructions. 
Note that having a "procedure address 
table" (PAT) to implement such calls 
is also essential to the code relo- 
cataoility at the procedure level. 
Moreover, we have envisioned a simple 
overlaying scheme .which uses the 
same PAT to "page" procedures 
into the main storage from a secondary 
storage device such as floppy disks. 
In such a case, the PAT entry will 
contain tne main memory address of the 
procedure, or its seconday memory 
address (disk address) , as well as 
appropriate flags. The I.M. 
code is read-only and paging out 
is not necessary; one only has to 
invalidate the PAT entries for 
the segments overlayed by a paged-in 
procedure. 

The next candidates for the 
4-oit opcodes, Dased on the 
frequency table, were condi- 
tional and unconditional branch 
instructions. Over half of the 
conditional oranches are forward 
branches to targets within 16 I.M. 
instructions from the source of the 
branch. Although this represents 
a large number of instructions, 
we realized tnat the "average length" 
of the final encoded instructions 
would be closer to 2 bytes. 
Consequently cutting down the ratio 
of branch instructions with small 
brancn distances. In addition, exact 
determination of all such short 
"relative oranch" instructions 
requires a non trivial, multi-pass 
algorithm, which was considered to 
outweigh the potential benefit. 
Instead, we settled on a 12-bit target 
address wnich is relative to the 
oeginning of tne procedure. This 
puts a limit of 4K bytes on the size 
of each procedure whicn, given the 
projected code density, was felt to 
be quite adequate. (The largest 
procedure in the P_Compiler is encoded 
in well under 2K bytes) . Since 
Dranching to a point outside the 



procedure containing the branch 
instruction is not allowed in PASCAL, 
the "procedure-relative" nature of our 
oranch instructions does not pose any 
problem. Furthermore, procedures can 
be easily "relocated" in the main 
memory with no restrictions and in 
a completely transparent mode. 
This feature is also needed to 
simplify the overlay scheme discussed 
previously. 

Without going into great detail 
in describing the analysis and 
encoding of the other instruc- 
tions, we note that the first 10 
instructions of the I.M. instruction 
code account for over 75% of the 
static instruction count, and 
somewhat smaller but still signifi- 
cant fraction of the dynamic 
count. Consquently, we can afford to 
be less concerned with the compactness 
of representation and pay more 
attention to the efficiency of the 
implementation of some of the statis- 
tically infrequent but, dynamically or 
otherwise, important instructions. 
One of the surprises in the static 
count listing is that the integer 
add "ADI" instruction is less frequent 
than the number of procedures. In 
other words the average procedure in 
the P Compiler contains less then one 
Addition operation, and the number of 
Subtraction, Division or Multiplica- 
tion operations are well oelow the 
number of Additions. In this sense, 
the lack of arithmetic instructions 
for operations like multiplication 
and division, at least as far as the 
compiler writer is concerned, is 
not a major loss. However, the 
software implementation of these 
instructions should favor the 
running time in the space/speed 
compromise to make them more attrac- 
tive to numerical applications. 

After completing the design of 
the instruction set, we were able to 
encode the P_Compiler and get an 
accurate measure of the program's 
total memory requirement as well 
as the contribution of individual 
instructions to the total sum. 
(Table-6 summarizes these results.) 
These figures correspond to a version 
of the compiler which was adopted for 
the IBM 370 implementation and 
includes features (such as alignment 
of variaoles on appropriate byte boun- 



WEST COAST COMPUTER FAIRE 



433 



BOX 1 579, PALO ALTO CA 94302 



daries and collection of other 
information) , which are irrelevant 
to the microprocessor implementa- 
tion. By eliminating these features, 
iwe feel that tne P Compiler will fit 
in aoout 25-2 6 ~K oytes witnout 
resorting to the other storage saving 
options mentioned earlier. 

Until this point in the 
design, no actual implementation 
of the interpreter ,was attempted. 
Only after we were reasonaoly satis- 
fied with the encoded size of our 
Dencnmark program, did we decide to 
write an interpreter for a parti- 
cular microprocessor. Once the 
representation of the I.M.' s Stack and 
the general plan for implementing the 
Instruction Petch and Execution 
cycles in the interpreter were 
defined, the coding of the indivi- 
dual instructions proved to be a 
quite simple and almost mechanical 
task. The resulting program, 
excluding its taoles and the section 
dealing with floating point instruc- 
tions (not yet implemented) , is about 
1.5K bytes long and execept for a 
small I/O interface is entirely self 
contained. 

In order to oDtain an estimate of 
the performance of the interpreter 
we decided to use a Quick-Sort 
program (due to .C.A.R. Hoare and J. 
Sedgewick) which was extensively 
used in the evaluation" "'of"' the 
Pascal 370 compiler. The PASCAL 
source of this program (including tne 
I/O and a Random Number generating 
routine) is about 130 lines long 
and it compiles into 410 I.L. 
instructions. This in turn can oe 
translated into 1240 bytes of tne 
ISM/3 70 code or encoded in 530 bytes 
for the interpretive execution by 
the microprocessor. The program's 
running time, when sorting N "random" 
integers, is proportional to rt*LOG(N) 
and takes about 2-seconds on the 
370/168 for N = 10000. The 2Mflz 
8080/Z80 microprocessor Quick-Sort, 
using tne same program, sorts N = 
1000 randomly generated numbers in 
less than 20 seconds under the current 
version of the interpreter. This 
rudimentary comparison shows that the 
interpretive microprocessor version 
of tne sort routine is about 100 times 
slower than the "compiled" 370/168 
code* 



A more meaningfull evaluation 
would ( be the comparison of the 
timing results of the I.L. 
interpreter with the alternatives 
available to the microprocessor 
programmer, namely the Assembly 
Language and the BASIC codings of the 
Quick-Sort routine. Although the 
assemoly language implementation of 
the sort routine is not completed 
yet, the (integer) BASIC coding of the 
program seems to oe about 18 times 
slower than the PASCAL version. (The 
Tiny BASIC [6] Quik-Sort program is 
about 750 bytes long and sorts 100 
numbers in 24 seconds. Tnis time 
increases to about 360 seconds for 
1000 random integers.) Even though the 
performance measurements of the 
interpreter is at a very early stage 
at the time of this writing, by an 
extrapolation of the available 
results, it seems that the interpreter 
is efficient enough to be useful in 
compiling large programs such as the 
P_compiler. This will make the micro 
prossesor based compiler a stand 
alone system without the need for 
external software support from larger 
computers. 

In conclusion, the "interactive" 
analysis technique presented here 
proved to oe a very helpful and 
effective tool in resolving some 
important design issues and answering 
critical questions before any imple- 
mentation decision had to be made . 
All too often, these early decision 
are made prematurely and without 
enough data. The ability to 
measure the cost and effect of such 
decisions, before being committed to 
them, is essential in designing soft- 
ware systems which must meet diffi- 
cult requirements. Although the 
major concern in our experiment was 
the limited address space of the 
microprocessors, one could use a 
similar approach in estimating the 
running time (or other dynamic 
properties) of programs, thereby 
avoiding potential pitfalls. With 
the experience gained by implementing 
the I.L. on the 8080 microprocessor 
family, we feel that the implemen- 
tation of such interpreters on 
other existing or future microproces- 
sors can be an effective way of 
overcoming the deficiencies and 
limitations of microprocessors as well 
as providing a reasonable vehicle 



WEST COAST COMPUTER FAIRE 



434 



BOX 1579, PALO ALTO CA 94302 



for transporting 
different machines. 



AKNOtfLEDGEMENT 



software across 



We wish to thank Len Shustek for 
his help in reviewing this note and 
providing the taole of 8080 opcode 
frequencies [5]. 



REFERENCES: 



[1J K. NORI, U. AMMAN, K. 
JENSEN, fl. NAGELI. .'The PASCAL P 
COMPILER, Impiementa'ion Notes' , 

Berichtes des Instituts fur Infor- 
matik, E.T.H. Zurich, Dec. 1974. 

[2 J D. BULMAN, 'STACK COMPUTERS: 



An Introduction', I.E.E.E. Computer, 
May 1977. 

[3J N. WIRTH, 'Steak vs. Multir- 
egister .Computers'", ACM SIGPLAN 

Notices Notices, March 1968. 

[4] L. SHUSTEK and B. PEUTO, 
'Current Issues in the Architecture of 
Microprocessors', I.E.E.E. Computer, 
Dec. 1976. 

[5] 3. HAZEGfll, 'Bootstrap and 
Adaptation of a PASCAL "Compiler on the 
IBM/370 Computer' , Computation Group 
Technical Memo (in preparation), 
Stanfor Linear Accelerator Center. 

[6 J L. WANG, 'Palo Alto Tiny 
BASIC', DDJ, VOL 1, NO 5, May 1976. 



WEST COAST COMPUTER FAIRE 



435 



BOX 1579, PALO ALTO CA 94302 



OPERATION OPERANDS EFFECT (3) 



A3I 
AD I 
AND 
CHK 
C3P 
CUP 
DEC 

LAB DEF 
OIF 
DVI 

LAB ENT 



(ABR) 
(ADR) 



LAB 



(DVR) 



EQJ 

FJP 

FLO 

FLT 

GEO. 

GRT 

INC 

IND 

INN 

INT 

I OR 

IXA 

LAB 

LSA 

LDA 

LDC 

LEO 

LES 

LOC 

LOD 

MOD 

MOV 

MPI (MPR) 

M3T 

NEO. 

NEW 

NGI (NGR) 

NOT 

RET 

RST 

3AV 

SBI {SBR) 

SG3 

3 TO 

3TP 

3TR 

TRC 

UJP 

ONI 

XJP 

NOTATIONS 



nt«A33(t) 

nt«2t + t 

nt«2t AND t 
PfQ ~(P<=t<=OJ»ERROR 

'J POSri(pc) ; pc«0 

T,P,Q PJSH(pc) ; pc«Q 
Q nt<t-Q 

Q (psuedo op) 

nt«2t 8 t 

nt«2t DI\7 (/) t 
T,P,Q 



T(,Q) nt«2t = t 
Q ~t»(pc< 0) 

2t<FLOAT(2t) 

t<FLOAT(t) 
T(,Q) nt«2t >= t 
T(,q) nt«2t > t 
Q nt<t + Q 

nt«M[t+QJ 

nt«2t IN t 

nt«2t v5 t 

nt«2t I t 
Q nt«2t + Q*t 

(pseudo op) 

nt«.Q 
) t<.t\[<P,Q>) 

nt«2t <= t 
nt«2t < t 
(pseudo op) 
nt«<P,Q> 
nt«2t MOD t 
rt[2t:QKM[t:Q J 
nt«2t * t 

nt«2t <> t 
M[tJ <hp;np«hp-Q 

rr«~--t ■ 

nt< "t 
T POP(pc) 

ftp«t 

M[tHhp 

nt«2t - t 

nt< [tj 

M[2tHt 

EXIT(t) 
T,P,Q M[<P,Q>J«t 

nt«TRUNC(t) 
■Q pc^si 

t<2t a t 
Q gc<Q + t 



Q 

P,Q 

T,Q 

T(,T) 

T(,Q) 



T,P,Q 



T(,Q) 



{aosoiute value} 



{bounds checking} 
{call stnd. proc.} 
{call user proc.} 

{LAB set to the Integer Q} 
{Set Difference} 

{entering proc. LAB, 
type T, level P, 
local stack frame size Q} 

{branch on FALSE} 

{FIX to FLOAT conversion} 



indirect load} 

set memoersnip test} 

set intersection} 

compute 'base/index' address} 
label definition} 
load address of string Q} 
load <base/level> address} 
load constant} 



Location counter} 

load from <level:P, offset Q>} 

move Q 'locations'} 

begin proc. parameter list} 

NEW stnd. proc} 



return to calling routine} 
release dynamic storage} 
mark dynamic storage} 

generate a single member set} 

indirect store} 

terminate execution} 

store into level: P, offset Q} 

TRCJNC operator} 

unconditional branch} 

set union} 

indexed oranch} 



« .:.:= assignment, ».:.:= conditional, 

t :.:= Top stack element, 2t .: := 2nd Top stack element , 

nt .:.:= New top stack element (implies POPing the old one), 

pc .:.:= program counter, hp .:.: = dynamic storage pointer, 

P,0 : := instruction operands, L .:.:= current (static) level 

T .: := type of tne operand/procedure, 

M :.:= data storage array, 

M[i:jJ .: := locations M[iJ through M[i+j-lJ, 

M[iJ :.: = M[i:l], .a : := address of the entity 'a', 

<i,j> .:.:= oase_level address (i.e. offset j of level i) . 



TABLE 1 
WEST COAST COMPUTER FAIRE 



I.M. 



INSTRUCTION 
436 



SET 



BOX 1579, PALO ALTO CA 94302 



OPCODE 


% INSTR. 


% CUM 


LOD R,M 


12.92 


12.92 


LODL R 


11.65 


24.57 


LOD I RR 


9.63 


34.21 


LOD a , R 


7.66 


41.87 


LOD R,R 


7.06 


48.93 


INC R 


6.39 


55.88 


ADD riL 


5.71 


61.59 


INC RR 


5.55 


67.14 



(PL/M PROGRAM) 



OPCODE 


% INSTR. 


% CUMM 


CALL 




13.00 


13.00 


LOD 


R,R 


9.06 


22.06 


JMP 


CC 


7.96 


30.02 


POP 


RR 


6.96 


36.98 


PUSH 


RR 


6.85 


43.84 


INC 


RR 


4.46 


48.30 


RET 




4.36 


52.66 


LOD I 


RR 


3.96 


56.62 


LOD 


R,M 


3.70 


60.32 


JMP 


U 


3.28 


63.61 


LOD I 


R 


3.17 


66.78 


CMP I 


N 


2.91 


69.69 


XCfl 




2.89 


72.58 


LD 


HL 


2.41 


74.99 



(ASSEMBLY LANG. PROGRAM) 
STATIC 8080 OPCODE FREQUENCIES 

TABLE 2 



OPCODE 


% INST. 


% CUMM. 


RAW COUNTS 


LOD 


18.8 


18.8 


2736 


LDC 


15.5 


34.3 


2254 


MST 


7.1 


41.5 


1037 


CUP 


7.1 


48.6 


1037 


FJP 


6.0 


54.7 


877 


STR 


5.7 


60.5 


837 


UJP 


5.2 


65.7 


756 


LDA 


4.4 


70.1 


647 


sro 


3.0 


73.2 


445 


IND 


2.7 


76.0 


402 


SOU 


2.6 


78.6 


338 


CSP 


2.4 


81.1 


361 


IXA 


2.3 


83.5 


346 


INC 


2.1 


85.6 


308 


DEC 


1.7 


87.4 


252 


NEQ 


1.6 


89.0 


238 


MOtf 


1.6 


90.6 


236 


L3A 


1.6 


92.3 


234 


LCI 


1.0 


93.3 


156 


ORD 


.9 


94.3 


138 


UNI 


.8 


95.1 


123 


NOT 


.6 


95.8 


100 


RET 


.6 


96.5 


96 


ENT 


.6 


97.1 


96 


ADI 


.5 


97.7 


81 


INN 


.5 


98.2 


80 


AND 


.3 


98.6 


49 


LEQ 


.3 


98.9 


44 


GRT 


.1 


99.1 


25 


SBI 


.1 


99.2 


24 


XJP 


.1 


99.4 


20 


LES 


.1 


99.5 


19 


I OR 


.0 


99.6 


13 


GEQ 


.0 


99.7 


13 


MPI 


.0 


99.7 


9 


CriR 


.0 


99.8 


9 


DV1 


.0 


99.8 


7 


NGI 


.0 


99.9 


4 


5GS 


.0 


99.9 


3 


mod 


.0 


99.9 


3 


DIP 


.0 


99.9 


2 


3TP 


.0 


99.9 


1 


ODD 


.0 


99.9 


1 


A 31 


.0 


100.0 


1 



TOTAL COUNT = 14508, ENTROPY = 4.10 

STATIC I.L. OPCODE FREQUENCIES 
FOR THE PASCAL_P COMPILER. 

TABLE 3 



WEST COAST COMPUTER FAIRE 



437 



BOX 1579, PALO ALTO CA 94302 



OPERAND 


COUN' 


R RANGE 







207 


1 


227 


2 


193 


4 


234 


3 


305 


16 


260 


32 


309 


64 


74 


128 


73 


256 


32 


512 


3 


1024 





2048 





4096 





8192 





16334 


1 



IUMMU. % COUNT 



BRANCH INTERVAL CUMM. 

DISTANCE COUNT COUNT 



207 


9.1 


434 


19.2 


627 


27.8 


861 


38.1 


1166 


51.7 


1426 


63.2 


1735 


76.9 


1309 


80.2 


1882 


83.4 


1914 


84.9 


1917 


85.0 


1917 


85.0 


1917 


85.0 


1917 


85.0 


1917 


85.0 


1918 


85.0 



NUMBER OF DISTINCT OPERANDS 3 148 
.COUNT* 2254 OR 15.5% OF THE TOTAL, 

DISTRIBUTION OF "LDC" OPERANDS 



VALUE 


COUNT 


CUMMU. 


ft COUN' 


RRANGE 











338 


338 


12.3 


1 





338 


12.3 


2 


181 


519 


18.9 


4 


233 


752 


27.4 


8 


757 


1509 


55.1 


16 


416 


1925 


7*. 3 


32 


230 


2155 


78.7 


64 


283 


2438 


89.1 


123 


17 


2455 


89.7 


256 


224 


2679 


97.9 


512 


39 


2718 


99.3 


1024 





2718 


99.3 


2048 


18 


2736 


100.0 



NUMBER OF DISTINCT OPERANDS* 84 
.COUNT* 2736 OR 18.8% OF THE TOTAL, 

DISTRIBUTION OF "LOO" OPERANDS 



1024 





52 


-512 





52 


-256 





52 


-123 


8 


44 


-64 


9 


35 


-32 


11 


24 


-16 


13 


11 


-8 


10 


1 


-4 


1 





-2 








-1 

















1 








2 


32 





4 


343 


32 


8 


179 


375 


16 


114 


554 


32 


73 


668 


64 


54 


741 


128 


21 


795 


256 


8 


816 


512 


1 


824 


1024 





825 



COUNT* 8 77 OR 6.0% OF THE TOTAL. 
FORWARD/BACKWARD BRANCH RATIO =15.0 



DISTRIBUTION OF BRANCH DISTANCES 
FOR THE "FJfl" INSTRUCTION. 



INSTRUCTION OPERAND DISTRIBUTIONS 
(FOR THE PASCAL_P COMPILER) 

TABLE 4 



WEST COAST COMPUTER FAIRE 



438 



BOX 1579, PALO ALTO CA 94302 



\ 
!L0D 


18.82 


LDC 


15. 5X 


MST 


7. IX 


CUP 


7.1% 


FJP 


6. OX 


STR 


5.7X 


UJP 


5.2X 


LDA 


4.47. 


ST0 


3. OX 


1M0 


2.V/. 


EQU 


2. 6% 


CSP 


£.4'/. 


TtfA 


2.3-/. 


INC 


2. 1Z 


0EC 


1.7X 


0THER 


13. 4X I 



L0D 


21. 2X 


LDC 


11. 9X 


FJP 


9.2X 


STR 


7.7X 


LDA 


5.5X 


IND 


4.2X 


IXA 


3.9X 


DEC 


3.7X 


AD I 


3. IX 


NEQ 


3. OX 


EQU 


2. S J /. 


UJP 


2.4X 


0THER 


21.4X 



ERR0R 28. 8X 



INSYMB0 16. 9X 



GENO 



5. IX 



SKIP 



4.9X 



NEXTCH 4.6X 



C0MPTYP 4.3X 



GEN2 



3.8X 



GEN1 



3.4X 



Ml 



w 



rrsx 



m 



0THER 14. 5X 



LDC 





10.77. 


LDC 


1 


1 1 . 8X 


LDC 


2 


10. IX 


LDC 


4 


12. 2X 


LDC 


8 


15. 9X 


LDC 


16 


13. 6X 


LDC 


32 


16. IX 


LDC 


64 


3.9X 


LDC 


128 


3.8X 


..LCt #4 




un 



-rOY. 



-- 107. 



207. 



--3Q7. 



-- 40X 



-•507. 



--607. 



— 707. 



— 807. 



Q07. 



- 1 - 1007. 



I.L. STATIC 
INST. COUNT 



I.L. DYNAMIC 
INST. COUNT 



CALLED PROC. 
DISTRIBUTION 



"LDC" OPERAND 
DISTRIBUTION 



OPCODE/OPERAND DISTRIBUTIONS OF THE BENCHMARK PROGRAM 



TABLE 5 



WEST COAST COMPUTER FAIRE 



439 



BOX 1579, PALO ALTO CA 94302 



OPND 






ABS. 


RE LA. 


CUMM. 


IN3TR. 


TOTAL 


RfiLA. 


OPCODE FIELD 




COUNT 


COUNT 


COUNT 


LENGTH 


LENGTH 


LENGTH 


000XXXXX 





LDC1 


2221 


14.3 


14.8 


1 


2221 


7.7 


110XXXX1 


193 


LODL 


1517 


10.1 


24.9 


1 


1517 


5.2 


01000010 


66 


MST 


1037 


6.9 


31.8 


1 


1037 


3.6 


1000XXXX D8 


128 


FJP 


877 


5.d 


37.7 


2 


1754 


6.1 


0110XXXX 


96 


CUPl 


836 


5. 5 


43.3 


1 


d36 


2.9 


1001XXXX Dd 


144 


CJJP 


756 


5.0 


48.3 


2 


1512 


5.2 


00110000 Dd 


48 


STRLG 


677 


4.5 


52.8 


2 


1354 


4.7 


00100100 016 


36 


LOD 


627 


4.1 


57.0 


3 


ld81 


6.5 


00100000 016 


32 


LDC 


613 


4.0 


61.1 


3 


1839 


6.4 


01000100 


68 


3 TO 


443 


2.9 


64.1 


1 


443 


1.5 


01001001 


73 


ADI 


389 


2.5 


66.7 


1 


339 


1.3 


110XXXX0 


192 


LODG 


388 


2.5 


69.3 


1 


3d8 


1.3 


00111001 


57 


EQU 


383 


2.5 


71.8 


1 


383 


1.3 


00110100 D8 


52 


LDALG 


332 


2.2 


74.0 


2 


664 


2.3 


00110101 D16 


53 


LDA 


315 


2.1 


76.2 


3 


945 


3.2 


0111XXXX 


112 


CSP1 


297 


1.9 


78.1 


1 


297 


1.0 


01001010 


74 


SBI 


296 


1.9 


30.1 


1 


296 


1.0 


1010XXXX 


160 


INDl 


267 


1.7 


81.9 


1 


267 


.9 


1011XXXX 


176 


IXA1 


265 


1.7 


83.7 


1 


265 


.9 


01000001 D8 


65 


MOV 


236 


1.5 


85.2 


2 


472 


1.6 


00111010 


58 


NEQ 


236 


1.5 


86.8 


1 


236 


.8 


00110110 DX 


54 


L3A 


234 


1.5 


88.4 


18 


4212 


14.6 


00100101 D16 


37 


L0D8 


204 


1.3 


89.7 


3 


612 


2.1 


00101000 03 


40 


CUP 


201 


1.3 


91.1 


2 


402 


1.4 


00100001 064 


33 


LDC8 


156 


1.0 


92.1 


9 


1404 


4.8 


01000111 


71 


ORD 


138 


.9 


93.0 








.0 


00101010 Dd 


42 


L8Q 


134 


.8 


93.9 


2 


268 


.9 


01010111 


87 


UNI 


123 


.8 


94.8 


1 


123 


.4 


01011101 


93 


NOT 


100 


.6 


95.4 


1 


100 


.3 






ENT 


96 


.6 


96.1 


11 


1056 


3.6 


01000011 


67 


RET 


96 


.6 


96.7 


1 


96 


.3 


00101110 D16 


46 


IXA 


81 


.5 


97.3 


3 


243 


.8 


01010110 


86 


INN 


80 


.5 


97.8 


1 


80 


.2 


01011010 Dd 


90 


NEtf 


57 


.3 


98.2 


2 


114 


.3 


01011011 


91 


AND 


49 


.3 


98.5 


1 


49 


.1 


00111011 


59 


LEQ 


44 


.2 


98.8 


1 


44 


.1 


0-0111110 


62 


GRT 


25 


.1 


99.0 


1 


25 


.0 


00110111 D40 


55 


XJP 


20 


.1 


99.1 


6 


120 


.4 


00111100 


60 


LES 


16 


.1 


99.2 


1 


16 


.0 


00110010 D16 


50 


STRS 


15 


.1 


99.3 


3 


45 


.1 


00110001 D16 


49 


3TR 


15 


.1 


99.4 


3 


45 


.1 


01011100 


92 


I OR 


13 


.0 


99.5 


1 


13 


.0 


00111101 


61 


GEO. 


13 


.0 


99.6 


1 


13 


.0 


01001101 


77 


MPI 


9 


.0 


99.6 


1 


9 


.0 


00111000 D16 


56 


CMPM 


9 


.0 


99.7 


3 


27 


.0 


01001011 


75 


D\7I 


7 


.0 


99.8 


1 


7 


.0 


00101001 D8 


41 


CSP 


5 


.0 


99.8 


2 


10 


.0 


01001110 


73 


NGI 


4 


.0 


99.9 


1 


4 


.0 


01010101 


85 


3G3 


3 


.0 


99.9 


1 


3 


.0 


01001100 


76 


MOD 


3 


.0 


99.9 


1 


3 


.0 


01011001 


89 


DIF 


2 


.0 


99.9 


1 


2 


.0 


01000101 


69 


ST03 


2 


.0 


99.9 


1 


2 


.0 


01010100 


84 


ABI 


1 


.0 


99.9 


1 


1 


.0 


01001111 


79 


R3T 


1 


.0 


99.9 


1 


1 


.0 


00111111 D8 


63 


CMP3 


1 


.0 


99.9 


2 


2 


.0 


00101011 Dd 


43 


INDS 


1 


.0 


100.0 


2 


2 


.0 




TOTAL COUNT = 


14975, 


BiTT E3 


= 23710. 







ENCODED INTERMEDIATE LANGUAGE INSTRUCTIONS 
FOR THE BENCHMARK PROGRAM (P_COMPILER) . 

TABLE-6 



WEST COAST COMPUTER FAIRE 



440 



BOX 1579, PALO ALTO CA 94302 



COMPILER CONSTRUCTION -FOR SMALL COMPUTERS 

R. Broucke 

Dept. of Aerospace Engineering and Engineering 
Mechanics, University of Texas at Austin 
Austin, Texas 78712 



Abstract 



We describe a simple parsing algorithm that 
can be used in a compiler to translate complex 
statements in machine instructions. It could be 
used on any small computer. To describe the 
Parser in detail we also include a SNOBOL-imple- 
mentation of it (one page of coding only) and 
three examples of translated statements. 

Introduction 



In the present article we describe a simple 
parser that could be easily implemented on a 
small computer or even on a microcomputer. The 
Parser is the heart of any compiler. It trans- 
lates the complex statements of a higher-level 
language and decomposes them in small elements, 
eventually in machine instructions. 

In order to be able to describe the parser 
we assume that the higher-level language is 
Fortran and that the machine language has only 
six instructions: Add, Subtract, Multiply, 
Divide, Exponents and Store. In order to test 
the algorithm we programmed it in SN0B0L4 which 
is a well known language for symbol manipulation. 
We give the complete listing of the program (only 
one page) at the end of the article, together 
with a one-page output of the program: the 
translation of three fairly complex Fortran 
statements in elementary operations. The 
elementary operations are preceded by the word 
CALL. The reader who is not too familiar with 
SN0B0L4 will be able to understand the 
mechanism of the Parsing algorithm by carefully 
studying the three examples. 

We hope that this short presentation of a 
"Simple Parser" will help some of the experi- 
enced programmers in building simple compilers 
for their personal computer. 

Description of Parser 

We insist only on the principal ideas 
and precedence rules that make up the body of 
a parsing algorithm. In fact we are restrict- 
ing ourselves to the following simple arithmetic 
expressions. 

1. There are only five binary operations: 
exponents, multiply, divide, add and 
subtract, identified by the symbols 
**» *> /, + and - . 

2. There may be an arbitrary number of 
parentheses, but they have to form 
matching pairs. 

3. There are no constants in the expressions, 
but only variables, (of any length, start- 
ing with a letter) . 



WEST COAST COMPUTER FAIRE 



441 



4. There are no subscripts or dimensioned 
variables . 

5 . No considerations of type are made (such 
as integer or real) . 

The parser program has 60 SNOBOL state- 
ments. The first 16 lines are Pattern 
definitions and the last 16 lines are the main 
program. The other 28 lines are the four sub- 
routines of the program: EXP, COMPIL, POPT, 
DROPT. The subroutine EXP is really the 
heart of the compiler; it transforms any 
expression without parentheses into a single 
variable. 

The basic principle of the Parser con- 
sists in searching for elementary expressions 
called Binaries . A Binary is a pair of 
variables separated by an operation such as 
**, *, /, + or -. The subroutine EXP compiles 
these binaries by replacing them with a 
tempory variable inside the statement and 
simultaneously generating a CALL statement as 
output. 

During the compilation process of any 
statement, we use the following precedence 
rules: 

All expressions inside parentheses are 
compiled first; pairs of parentheses are thus 
removed gradually until a "level zero" 
expression with no parentheses remains . A 
call to the subroutine EXP is made for each 
pair of parentheses. The final expression is 
then compiled by a last call to the subroutine 
EXP. Inside the subroutine EXP, the following 
precedence rules are respected. 

The exponential binaries (of the form 
A**B) are compiled first, from left to right 
as they occur in the statement. 

The multiplicative binaries (of the form 
A*B or A/B) are treated next, from left to 
right. 

Finally the additive binaries (such as 
A+B and A-B) are compiled, again from left to 
right as they occur in the expression. 

A call is made to the subroutine COMPIL 
for each binary that is found in the expression 
Also, a temporary variable is generated (a 
letter T followed by a 5-digit integer) for 
the storage location of the result of the 
binary operation. For instance the result of 
A*B may be stored in T00012. The label 
T00012 is constructed by the SNOBOL program. 
At the end of the compilation of A*B = T00012, 
the program checks if A, B happen to be 
temporary variables. If they are, they will 

BOX 1579, PALO ALTO CA 94302 



be stored in a stack (last-in, first-out 
principle) with available temporary locations 
(TAVAIL) . This is done by the subroutine DROPT, 
with the purpose of optimizing storage locations 
in the object program. The subroutine POPT that 
finds temporary locations whenever they are needed 
will first search in the table of avialable 
temporaries. If this table is empty, a new 
temporary variable will be constructed. The reader 
can understand this feature by examining the three 
examples of compiled statements given at the end 
of the text. It can easily be seen that the flow- 
chart of the program can be represented as follows: 



MAIN 



("EXP — 

Idropt 



fcOMPIL- 
-> [POPT 



-> DROPT 



WEST COAST COMPUTER FAIRE 



442 



BOX 1579, PALO ALTO CA 94302 





ALPHA = 'ABCDEFGHIJLKMNOPQRSTUVWXYZ' 






DIGIT = •0123«I56789• 






ALNUM = ALPHA DIGIT 

B = • * 

BS = SPAN(B) ! •• 










LP = BS •(• 






RP = BS ')• 






VE = (ANY (ALPHA) (SPAN (ALNUM) ! • * 


)) . VAR 




EXX = BS •♦*• 






MULDIV = BS (•*• ! •/•) . MD 






ADDSUB = BS (•♦• ! •-•) . AS 






BINARYE = BS VE . LVAR EXX BS VE • RVAR 






BINARYM = BS VE . LVAR MULDIV BS VE . RVAR 






BINARY A = BS VE . LVAR ADDSUB BS VE • RVAR 






PEXP = LP BREAM t(H) . INSIDE RP 






TPAT = 'T' ANY(DIGIT) ANY(DIGIT) ANY(DIGIT) 


ANY(DIGIT) ANY(DIGIT) 




DEFINE(»C0MPIL(0PERTN»A1»A2»RE)M 


:(END # CMP) 


COMPIL OUTPUT = DUPL(« ••30) 'CALL • OPERTN ♦ ( 


• Al •»• A2 •»• RE •)• 




DROPT(Ai) 






DR0PT(A2) 


: (RETURN) 


END. CMP 






DEFINE ('POPTO') 


K POPT. END) 


POPT 


TAVAIL (•»• BREAK (•,*) . POP ) = " 
TfcMPNR = TEMPNR ♦ 1 
POP = 'T» DUPLCO', 5 - SIZE(TEMPNR)) TEMPnR 


SS(POP2) 


POP2 


POPT = POP 


: (RETURN) 


POPT« 


END 






DEFINEC DROPT (TIM) 


:(O.END) 


DROpT 


Tl TPAT 


:F (RETURN) 




TAVAIL = •»• Tl TAVAIL 


: (RETURN) 


0*EnD 








DEFINE( • EXP ( EXPR) •) 


MEND. EXP) 


EXP 


EXPR BINARYE = POPTO 


:F(L5) 




COMPILCPOW* » LVAR » RVAR » POP) 


MEXP) 


L5 


EXPR BINARYM = POPTO 

OP s 'MUL' 

OP = IDENT(MD#VM 'DlV 


IF(L6) 




C0VPIL(0F r LVAR, RVAR* POP) 


:(L5) 


L6 


EXPR BINARYA = POPTO 


:f(L7o) 




OP = 'ADD 1 






OP = IDENT(AS»»-M 'SUB' 






COvplL(OP»LVAR f RVAR»POP) 


:(L6) 


L70 


EXP = EXPR 


: (RETURN) 



END .EXP 

TLMPNR =0 

TAVAIL = •»• 
LI EXPR = TRIM (INPUT) 

OUTPUT = EXPR 

EXPR VE . LEFTV = •« 
EXPR ( BS •=•) = •• 
L8 EXPR PEXP = EXP (iNSlDt) 
EXPR = LXP(EXPR) 
EXPR BS Vt s •' 
EXPR = EQ( SI2C ( EXPR) »0) •• 



:F(ENn) 

:f(ed 
:f(E2) 

:S(L8) 



LB1 
El 
E2 
END 



:f(l*i) 
:p(lai) 

#30) 'CALL STORE (• VAR •»• LEFTV •)• 

(LI) 
(LI) 
(LI) 
(LI) 



OUTPUT = DUPL(* 

DROPT(VAR) 

OUTPUT = 'INCORRECT EXPRESSION ON RIGHT SinE' 
OUTPUT r 'ERROR ON LEFT SIDE OF EQUAL SIGN' 
OUTPUT = 'INCORRECT EQUAL SIGN • 



WEST COAST COMPUTER FAIRE 



443 



BOX 1579, PALO ALTO CA 94302 



Y=Wt*R*KL-T**R-X+X/R**TR*RE+A*Z/X**Z-A+Zl**Ul/U*T+AS/Z-QE/ZX-Ql23K 

CALL P0w(T»R,T00001) 
CALL POw(R»TR»T00003) 
CALL POw(X»Z,T00006) 
CALL POw(Z1»u1»T00005) 
CALL MUL(WE»R»TQOOO<n 
CALL DlV(X»To0003»T00002) 
CALL MUL(T00002»RE»T00003) 
CALL MUL(A»Z#T00002> 
CALL DlV(T00002»T00006»T00007) 
CALL DlV(T00005»U»T00006> 
CALL MUL(T00006#T»T00005> 
CALL DlV(AS,Z'T00006) 
CALL DlV(QE#ZX»T00002) 
CALL ADD(TOOoOi»rKL#TOOO0B> 
CALL SUe<T00008»T00001»T0000«O 
CALL SUB<TOOOO«*»X»T00001) 
CALL ADD(T00001»T00003»TOOOO«*> 
CALL ADD<T00004rT0Q007»T00003> 
CALL SUB(T00003rA»T00007) 
CALL ADD(T00007.T00005»T00003) 
CALL ADD(T00003»T00006»T00005) 
CALL SUB(T00005»T00002»T00006) 
CALL SUB(T00006»Q123K»T00002> 
CALL STORE(T00002»Y) 

Z=G*, ( +B*<(C-D)>**A-K*<X) + ( (A)+X-( ((< A)))) * ( ( (A9-B/D) )+D) >+A»«BD 

CALL SUB(C»D»TOOOOD 
CALL DlV(B»D»T00002) 
CALL SUB(A9»T00002»T00003) 
CALL ADQ(T00003»D»T00002) 
CALL MUL(A»T00002»T00003) 
CALL ADQ(A»XrT00002) 
CALL SUB(T00002»T00003*TOOOOU) 
CALL POW(T00001#A»T00003) 
CALL POw(A#BD'T0000l) 
CALL MUL(G»ArT00002> 
CALL MUL(B»T00003»T00005) 
CALL MUL(F»X»T00003> 
CALL ADD(T00002»T00005»T00006) 
CALL SUB(T00006»T00003»T00005) 
CALL ADD(T00005»T0000<»fT00003) 
CALL ADD(T00003»T0O001»T0000*»> 
CALL STORE (TOOOOU»Z> 

Z = { A+B*C)/<F*G-(D+E>/(H+K>) 

CALL MUL(BfC»T0000U) 

CALL ADD(A'TOOOO^'TOOOOI) 

CALL ADD(D»E»TOOOO<*> 

CALL ADD(HrK»T00003> 

CALL MUL(F»G»T00005) 

CALL DlV(T0000<t«T00003'T00006) 

CALL SUB(T00005»T00006»T00003) 

CALL OlV(T00001rT00003»T00006) 

CALL STORE(T00006»Z) 



WEST COAST COMPUTER FAIRE 



444 



BOX 1579, PALO ALTO CA 94302 



TABLE DRIVEN SOFTWARE 

AN EXAMPLE 

Vat Skalabrin, 
Second Source 



ABSTRACT 

A mini data base management system (MDBMS) is implementable 
in any computer language which has or can be given, the 
capability to perform byte manipulation within a data record. 
This capability is definable as the ability to move a 
contiguous segment of bytes between the data record and a 
work area. With it, a single set of programs can be described 
which will allow the user to create, update, and report on 
data from virtually any data file. The system will also 
allow a data base to be altered in format without requiring 
any program modification. The report option of the system 
is a version of the usual general-purpose-select-whatever- 
you-want program found in most larger installations. 

DEFINITION 

Mini Data Base Management and MIS is a set of 
computer programs, user manuals, user training and 
support which allows the manager's staff to 
create, maintain and add to their own data file. 
MDBMS gives the manager the capability of generat- 
ing reports on selected members of his data base. 
MDBMS also allows the the manager to change the 
format of his data base, dropping or adding types 
of information kept in the files, without requiring 
additional DP center programming. 

WHY MDBMS? 

Firms need to maintain on-line computer files to 
capture daily activity, and to produce on-call 
reports, but, management also reserves the right 
to expand and change the contents of the records 
kept in that data file - "The county's new regula- 
tion means that we'll have to keep an Ethnic 
Origin code on all of our employees. Can you DP 
boys stick that in all your programs by Monday?" 
Plus there are generally several middle management 
people asking if you can't keep their thermofro- 
cator inventory on the computer. 

The computer manufacturer would like to help his 
clients by furnishing a file management system for 



WEST COAST COMPUTER FAIRE 445 BOX 1 579, PALO ALTO CA 94302 



thermofrocator inventory, but he is geared towards 
mass production and cannot afford to tailor his 
software to each installations needs. 

The requirements in most cases are very similar in 
system design: 

1. create a file 

2. maintain the file 

3. update, add, delete records 

4. report generation 

5. be ready for a change in record format. 

The differences in most cases are also very similar: 

1. number of records in a file 

2. number of items in a record 

3. names of the items 

4. lengths of the items 

5. length of the record 

6. data item types (alpha or numeric) 

7. report formats and headings. 

The Mini Data Base Management System and MIS 
Report generator discussed in this paper attempt 
to provide one answer to the requirements listed 
above. 

MDBMS FUNCTIONAL OUTLINE 
File Creation 

The Driver File - The design philosophy behind 
MDBMS rests on describing the size and make-up of 
a data record in a fashion which will allow the 
subsequent update and report programs to build a 
core table of each data item's: 

° size, in bytes 

° type, alpha or numeric 

° name 



This formation of the makeup of a data record is 
the task of the first module of MDBMS, CREATE. 
The output of CREATE is a sequential, small file 
called the Driver File. We will use BASIC and an 
example to clarify the operation of CREATE. 



FILENAME? 



(CREATE initializes 
PEOPLE. DRV the Driver 
file) 



NUMBER OF DATA ITEMS PER RECORD? 6 

(CREATE will now loop 
through the item specifi- 
cation questions 6 times) 

THE FIRST DATA ITEM MUST BE THE KEY OR RECORD 
IDENTIFIER ITEM. LIMIT EACH ITEM NAME TO 10 
CHARACTERS. 

ITEM #1 Name? SOC SEC # 

A (ALPHA) OR N (NUMERIC)? A 

NUMBER OF CHARACTERS? 11 

(The entries in PEOPLE. DRV 

at this point are: 

006 

SOC SEC # A011 



ITEM #2 NAME? NAME 

A (ALPHA) OR N (NUMERIC)? A 

NUMBER OF CHARACTERS? 30 

(PEOPLE. DRV now has: 

006 

SOC SEC # A011 

NAME A030) 

ITEM #3 Name? SEX 

A (ALPHA) OR N (NUMERIC)? A 

NUMBER OF CHARACTERS? 1 

(006 

SCO SEC # A011 
NAME A030 
SEX AOOl) 



ITEM #4 NAME? AGE 






A (ALPHA) OR N (NUMERIC) 


? N 




NUMBER OF DIGITS? 2 


(006 






SOC SEC 


* A011 




NAME 


A030 




SEX 


AOOl 




AGE 


N002) 


ITEM #5 NAME? SALARY 






A (ALPHA) OR N (NUMERIC) 


? N 




NUMBER OF DIGITS? 5 


(006 






SOC SEC 


# A011 




NAME 


A030 




SEX 


AOOl 




AGE 


N002 




SALARY 


N005) 


ITEM #6 NAME? LOVER 






A (ALPHA) OR N (NUMERIC)? A 




NUMBER OF CHARACTERS? 20 






(006 






SOC SEC 


# A011 




NAME 


A030 




SEX 


AOOl 




AGE 


N002 




SALARY 


N005 




LOVER 


A020) 



"PEOPLE" HAS BEEN CREATED, YOU MAY NOW RUN "UPDATE" 
TO ENTER DATA RECORDS INTO YOUR FILE AND "REPORT" 
TO SELECT AND PRINT FROM "PEOPLE." 

CREATE has finished its job and built the driver 
file, PEOPLE. DRV, and initialized the key (PEOPLE. KEY) 
and data files (PEOPLE.DAT) . 

Digression for Overview - We now are discussing 
the three files which makeup the MDBMS system: 

1. PEOPLE. DRV, the driver file 

2. PEOPLE. KEY, the key file (do-your-own ISAM) 

3. PEOPLE.DAT, the data file. 

The Driver file contains a description of the 
format of each data item in a record, and therefore 
of the entire record itself. 

The Key file will contain the user's record identi- 
fication key (Social Security Number in the example) 
and will also contain the physical record number 
that the data is stored in PEOPLE.DAT. The Key 
file is sortable. 



WEST COAST COMPUTER FAIRE 



446 



BOX 1579, PALO ALTO CA 94302 



The Data file will contain the data record with 
the remaining data (Name, Sex, Age, Salary, Lover) 
and is never sorted. We will also discuss the tag 
file, and how to sort, later. 

File Maintenance and Update 

The Update Program - UPDATE is the update program 
(surprise!) and is best described by continuing, 
our example. 

FILENAME? PEOPLE 

(UPDATE looks for a 
driver file named PEOPLE. DRV, 
and finding it builds 
core tables with an 
arbitrary max of 100 
items. In this case 
there are only six items 
in each. There are: 

1. an Item Name 
table of 6 names 

2. an Item Type 
table of 6 types 

3. an Item Length 
table of 6 lengths 
UPDATE now will ask 
whether you wish to Add, 
Change, or Delete a 
record. ) 

After every record transaction in the following 
example, the contents of PEOPLE. KEY and PEOPLE.DAT 
will be displayed. 

ACTION? ADD 

SOC SEC #? 531-33-1111 

NAME? SKALABRIN VLADOMIR 

SEX? M 

AGE? 33 

SALARY? 42000 

LOVER? MOTHER NATURE 



Accept-Numeric 
Continue 



people . key 



people . dat 



0002 

A531-33-11110001 Skalabrin Vladomir M3342000 
Mother Nature 

What has occurred is now instantly replayed. 

Upon receiving the user's file name, PEOPLE, our 
UPDATE program opened the driver file, PEOPLE. DRV, 
and retrieved: 

Number of items = 6 
and then "For 1=1 to Number of 

Items 

"INPUT Name(i), Type(i), 

Length (i) 
°NEXT I 

UPDATE then asked for the action to be performed, 
it was ADD - a command to collect from the user 
all six items in this new record. UPDATE branches 
to the Add-a-Record routine and: 



°For 1=1 to Number of 
Items _ 

"PRINT Name(i) ; 

°IF Type(i)="N" branch to 
Accept-Numeric 

"INPUT Alpha-String 

"GO TO Continue 

"INPUT Numeric Value 

"CONTINUE 

"Perform a routine to 
concatenate ( append ) 
sufficient blanks to pad 
the response to at least 
Length (i) bytes and then 
isolate the first Length (i) 
bytes. 

"Perform the move of this 
contiguous segment of 
bytes into the record - 
length work buffer. 

"NEXT I 

Perform the routine which 
separates out the key 
(record identifier - the 
first Length (1) bytes. 

"Perform the routine which 
finds the next available 
slots in PEOPLE. KEY and 
PEOPLE.DAT and write the 
records out. 

"RETURN 



UPDATE now repeats its request for the action to 
be performed. 

ACTION? ADD 

SOC SEC #? 518-18-1818 

NAME? ALBRECHT ROBERT 

SEX? M 

AGE? 38 

SALARY? 15000 

LOVER? YES 



people . key 



0003 
A531-33-11110001 



A518-18-18180002 



ACTION? CHG 

SOC SEC #? 531-33-1111 

ITEM NAME? AGE 

AGE = 33 = ? 38 

ITEM NAME? /END 



people . dat 



Skalabrin Vladomir M3342000 

Mother Nature 

Albrecht Robert M3815000 

Yes 



people . key 



0003 
A531-33-11110001 



A518-18-18180002 



people.dat 



Skalabrin Vladomir M3842000 

Mother Nature 

Albrecht Robert M3815000 

Yes 



WEST COAST COMPUTER FAIRE 



447 



BOX 1579, PALO ALTO CA 94302 



After reading this file, UPDATE had: 
Number of Items = 6 
A six element Name table 
A six element Type table 
A six element Length table 
Record Length = 69 bytes (summing the 
lengths) 

When AGE (item 4) was requested during the CHG 
operation, UPDATE totaled the lengths of items i, 
2, and 3 (those preceding AGE), added 1 and had 
the position of the Starting Byte of AGE. 

Item Value = MIDg (Work Buffer, Starting 

Byte, Length (4)) then returns the value of AGE 

from the 69 byte work buffer cum combination data 

record. 

After accepting the new AGE in Response and perform- 
ing the Pad-it-out-to-length (4) -bytes routine, the 
Work Buffer is reformed by: 

Work Buffer -■ LEFTJ5 (Work Buffer, Starting Byte - 
1) + Response + RIGHTg (Work Buffer, 
69- (Starting Byte -1 + Length 
(i))). 

The CHG option is the Update option, and upon its 
choice, UPDATE will: 

°PRINT Name (1) ; 

"INPUT Response 

"Perform the Search Key 
File routine for this 
identifier and move the 
appropriate records into 
the work buffer. 
Start "PRINT "ITEM NAME" ; 
. . . "INPUT Response 

"FOR I = 2 TO Number of 
Items 

"IF Named) = Response 
branch to Continue 

"NEXT I 
Continue "CONTINUE 

"Perform routine to move 
Length (i) bytes out of 
the appropriate area of 
the work buffer into Item 
Value. 

"PRINT Named); "="; Item 
Value; "=",- 

"Accept Response as before 
and move back into the 
work buffer. 

"GO TO Start 

Detail of Moving To and From 

In our example, the driver file PEOPLE. DRV contains: 
006 

Soc Sec # A011 

Name A030 

Sex A001 

Age N002 

Salary N005 

Lover A020 



This moving out of n bytes beginning at position 
m, and moving in of n bytes beginning at position 
m is the critical capability the computer language 
must have to implement the MDBMS concept. 

MIS - The Report Option 

The value of a general purpose, select, format and 
report on-line program is very great for any 
computer installation providing data processing 
services to its customers. 

The picture that keeps returing to mind is of the 
innocent eyed business manager who just requested 
a non-existent report for tomorrow, and when told 
that no program existed and it may take two weeks 
to find the time, remarks: 



"You've got the data in your computer, 
just asking you to print it out." 



I'm 



MDBMS and its MIS report option does just that. 

Let us demonstrate the use and function of REPORT 
(the report program) by assuming we've entered a 
number of people into our file PEOPLE and contin- 
uing our example. 
FILENAME? PEOPLE 

PLEASE ENTER THE ITEM NAMES, THE COMPARISON TESTS 
AND TEST VALUES TO BE USED. 



ITEM NAME? 


SEX 


COMPARISON? 


EQ 


TEST VALUE? 


M 


ITEM NAME? 


AGE 


COMPARISON? 


GT 


TEST VALUE?.. 


30 


ITEM NAME? 


AGE 


COMPARISON? 


LT 


TEST VALUE? 


40 


ITEM NAME? 


/END 



We have just specified a report of all male People 
between the ages of 30 and 40. 

The mechanism of REPORT works thusly: 

REPORT builds core tables of item names, types, 
and lengths just as UPDATE did. REPORT then 
builds, through terminal interaction, selection 
tables of: 

1. item name to be tested 

2. comparison test to be used 

3. value. to test against 

When the user signifies that he has entered all of 
her selection criteria by typing "/END", REPORT 
selects the records for printing by: 



WEST COAST COMPUTER FAIRE 



448 



BOX 1579, PALO ALTO CA 94302 



Selection Routine 



eq 



"LET T$ = "GO" 

"Read a record (sequential 

file reads) 
"FOR 1=1 to Number of 

Tests 
"FOR J=l to Number of 

Items 
°IF Name to be Tested 

(I) = Item Name (J) GOSUB 

Selection Routine 
"NEXT J 
"NEXT I 

°IF T# = "GO" PRINT 
°G0 TO START 

°Perform routine to move 

item (J) from record 

buffer to Item Value. 
"Convert Comparison (I) to 

comparison number (1 

through 6) . 
°GO TO eq, ne, gt, ge, It, 

le, ON comparison number. 
°IF Item Value <> Test 

Value (I) , LET T# = 

"NO" 
"RETURN 



The "PRINT record" used above may be replaced with 
GOSUB Print Formatting routine. This would be the 
case in a full blown REPORT program which allows 
the user to specify report headings, define a 
subset of a record's items to print, and allow the 
formation of new report items formed from record 
items and/or previous report items. 

This type of sophisticated REPORT program might 
have the following starting dialogue: 

HOW MANY COLUMNS IN THIS REPORT? 4 

COLUMN #1 HEADING? Employee Name 
DATA (D) OR FORMULA (F)? D 
DATA ITEM NAME? NAME 

COLUMN #2 HEADING? AGE IN MONTHS 
DATA (D) OR FORMULA (F)? F 
NUMBER OF COMPONENTS? 1 
COMPONENT NO. 1 FROM? D 
DATA ITEM NAME? AGE 
MULTIPLIER? X12 

COLUMN #3 HEADING? ANNUAL SALARY 
DATA (D) OR FORMULA (F)? D 
DATA ITEM NAME? SALARY 

COLUMN #4 HEADING? SALARY/AGE RATIO 

DATA (D) OR FORMULA (F)? F 

NUMBER OF COMPONENTS? 2 

COMPONENT NO. 1 FROM? D 

DATA ITEM NAME? SALARY 

MULTIPLIER? XI 

COMPONENT NO. 2 FROM? R 

REPORT COLUMN NO.? 2 

MULTIPLIER? XI 

COMPONENTS 1 & 2 OPERATION? / 



WEST COAST COMPUTER FAIRE 



The REPORT program can be given these capabilities 
of selecting records for printing, formatting the 
output, forming report items from combinations of 
data items and previous report items and could 
also be equipped to print grand totals of columns, 
subtotals for columns, and counts of the reoccurrence 
of specific items. 

The actual print formatting would be done by 
defining a 132 byte output record (for line printers) 
and performing the "Move n bytes into the record 
beginning at positon m" routine. 

Sorting the Report 

The need to sort a report into a particular order 
introduces a redesign into MDBMS and MIS components. 
Considerations of remaining general purpose, 
increasing processing speed, etc., dictate the 
REPORT program outlined above to be segmented into 
a SELECT program which performs the selection of 
records to be processed, and a format- and-print 
only REPORT program. One alteration is made to 
each of SELECT and REPORT, and a new program SORT 
is defined. 

"SELECT writes the record key (Social Security 
Number in our example) and the corresponding 
data record number into the last 20 bytes of 
a 120 byte TAG file, and blanks the remainder 
of the TAG record. 

°If the selected records are to be reported in 
a sorted order, SORT will determine the sort 
keys by item name, from major to minor, 
access the data file by the record numbers in 
the TAG file, and move the corresponding item 
values into the first 100 bytes of the TAG 
file. 

The TAG file is sorted as though the entire 
120 bytes were one sort key. 

"REPORT sequentially uses the record keys and 
data record numbers from the last 20 bytes of 
the TAG file to read data records and print 
its report. 

Do Your Own ISAM 

The discussion presented in the preceding pages 
mentions the Key File and record keys several 
times. While MDBMS and MIS is operable completely 
with sequential files, it performs as though it 
had Indexed Sequential Access Method (ISAM) capa- 
bilities. 

ISAM gives the user and programmer the capability 
of referencing the storage location of a data 
record by its user-defined key (Social Security 
Number, Catalog Order Number, Course Code, etc). 
The only restrictions imposed are a maximum size 
(bytes) and uniqueness of record keys (no two 
alike) . 

The large system ISAM's are markedly faster than 
the do-it-yourself concept outlined below, but 
often have severe operational limitations. Some 
of these are: 



449 



BOX 1579, PALO ALTO CA 94302 



1. Files must be initially built via an ISAM 
loading utility. 

2 . When sufficient records have been added to 
fill the allocated ISAM file or its overflow 
area, it must be rebuilt. 

3. Some ISAM's (e.g., IBM 1130) do not allow 
adding a record in the same program which is 
updating the file. 

In particular, most small systems do not have an 
ISAM utility, and those that do have restrictions 
which make their use in a user controlled environ- 
ment prone to operational errors. 

MDBMS fulfills the ISAM concept in its Key File 
and search routines. 

Consider the Key File as a unique sorted file of 20 
byte records, each record containing a unique record 
key (15 bytes) and an associated data record number 
(5 bytes) . Set Key File record #1 aside as a special 
record to be considered later. 

ISAM Search 

Each program in the MDBMS series must be able to 
locate the data record defined by a user key. In 
our example, this means that each program must be 
able to take the Social Security Number 518-18- 
1818 and locate the corresponding data record 
ALBRECHT ROBERT M3815000 Yes. 

At least two search schemes are available: 

1. Perform a binary search of the Key File. 
For- fairly concise coding and needs no extra 

core tables. 
Against- requires a significant amount of 
extra disk accesses (10 for a 1,000 
record file) . 

2. Build a in-core directory of highest-key- in- 
this-disk-segment values. 

For- fast, only requires one disk access to 
locate a key where segment = buffer 
read. 

Against- may require a large core table if 
the file is large and the segment is 
small, or trade-offs of table size 
versus number of segments per high-key, 
and the subsequent increase in disk 
accesses. 

In either case, the logic of the search routine is 
the same. 

The physically first record of the Key File contains 
a count of how many records (including #1) are in 
the Key File. This record is maintained with 
sufficient leading blanks to ensure that it will 
always sort to the front and remain the first (#1) 
record. The record count is updated by UPDATE if 
records are added or deleted. 



An initialized Key File for a system capable of 
dynamically adding records would contain: 

(15 spaces ) 00001 

An initialized Key File for a system requiring 
allocation of file space would contain: 

(15 spaces . .) 00001 
zzzzzzzzzzzzzzz 00001 
zzzzzzzzzzzzzzz00002 
zzzzzzzzzzzzzzz00003 
zzzzzzzzzzzzzzz00004 

The search and write routines for an ADD would be: 

1. read the #1 record and get COUNT (done once). 

2. read the COUNT+1 key file record and get the 
record number of the first available data 
file slot. Place this data file record 
number in RECNUM. 

3. Write the user key for this new record in the 
Key File at COUNT+1, and set COUNT = COUNT + 
1 in core. No further accesses of the #1 
record would be required until UPDATE ends if 
this is a single user environment. 

4. after completing the formation of all the 
data required for this new record, write the 
data into the Data File at RECNUM. 

Both the binary and directory search techniques 
require that the Key File be sorted at some time, 
and also need an additional routine to handle that 
unsorted portion of the file created by ADD's 
while UPDATE is in operation. 

Briefly, the search routine must be capable of: 

1. fast searching the sorted portion of the Key 
File, and 

2. sequentially searching the add-on portion. 

SUMMARY 

The Mini Data Base Management System described on 
these pages can be implemented in any computer 
language having the capability of moving an arbi- 
trary (defined at run time) segment of bytes from 
and to a buffer area. 

It is a single set of programs, CREATE, UPDATE, 
SELECT, SORT, REPORT and TRANSFER*, which allow 
the creation and maintenance of user defined data 
files, and the selective report generation from 
these files. 

This system has been implemented in BASIC, COBOL 
(with a macro) , and RPG (with an assembly sub- 
routine) • 



♦TRANSFER looks at the old and new Driver files, 
and moves selected data from the old Data file to 
the new Data file. 



WEST COAST COMPUTER FAIRE 



450 



BOX 1579, PALO ALTO CA 94302 



DESIGN CONSIDERATIONS IN THE IMPLEMENTATION OF A HIGHER-LEVEL LANGUAGE 
Including Details of the Internals of Cromemco "I6K BASIC" 

William F. Wilkinson 
Shepardson Microsystems, Inc. 
20823 Stevens Creek Blvd. , Building C4-H 
Cupertino, California, 95014 



Purpose and Scope 

This paper will try to serve 
several purposes: First, it will intro- 
duce at a tutorial level some of the more 
important considerations that must be 
weighed in the design of a compiler or 
interpreter. It will also present a few 
of the techniques commonly employed in 
various language processor implementations. 
And, finally, it will discuss in some de- 
tail an actual and successful BASIC lan- 
guage interpreter. 

As noted, a sizable portion of 
the material herein will be of interest 
to those who might be relative novices in 
the field of system- level programming. 
On the other hand, it is hoped that more 
advanced programmers will appreciate the 
information presented relating to the in- 
ternals of Cromemco' s new stand-alone and 
disk-based BASICs. 

Terminology 

Some of the terms used within 
this paper may be unfamiliar to many read- 
ers. As an aid to better understanding 
of the contents herein, a glossary of some 
of the more important and/or complex terms 
has been included as an appendix. 

The first usage of a word or 
phrase that may be found within the glossary 
will be flagged by a double asterisk (**) 
for the reader's convenience. 

Types of Language Processors 

In subsequent subsections, the 
advantages, disadvantages, relative memory 
requirements, and relative user-program 
execution speeds of the following types 
of language processors will be briefly 
considered: 

COMPILERS 

1. One Pass 

2. One Pass plus Assembly 

3. Multi Pass 
INTERPRETERS 

1. Unaltered Source 

2. Keyword Token (Partially 
Syn taxed) 



3. Fully Syntax Checked 

4. Incremental Compilers 

5. Compile and Go 

An example of each type as represented by 
an available software product will be given. 
However, this author can not claim with ab- 
solute certainty that the examples given 
are correct since, in some cases, external 
indications were the only indications as to 
type. 

Compilers 



a type of language 
user's source pro- 



A compiler is 
processor which reads a 
gram one or more times and produces (as 
final output) actual machine language code. 

Typically, programs which are com- 
piled need 'support' from system 'libraries' 
of subroutines. These subroutines are used 
when the compiled program needs to perform 
a function too complicated to be included 
directly in the machine code. Examples 
of routines found in system libraries in- 
clude I/O (Input/Output) routines, trans- 
cendental functions (Log, Sin, etc.), and 
array processing. On machines such as IBM 
370 *s which include floating point arith- 
metic in their instruction set, such instruc- 
tions are obviously included in the object 
code. But for a microprocessor lacking these 
capabilities, the routines for floating 
point arithmetic must also be included in 
the system libraries. 

Advantages of compilers include 
generally lesser memory requirements and 
faster user-program execution speeds (because 
the output code really is machine language) . 
Note, though, that some of the speed of 
compiled code is lost on microprocessor-based 
systems where significant amounts of floating 
point arithmetic is performed. Even on small 
systems, however, there is no denying the 
advantage of compilers when performing in- 
teger based routines. 

Disadvantages of compliers include 
the fact that the machine code output is often 
very difficult to debug and that turn-around 
time between program revisions is longer 
(since both the debugging and the compliling 
consume significant amounts of time). 



WEST COAST COMPUTER FAIRE 



451 



BOX 1579, PALO ALTO CA 94302 



Sophisticated (especially disk- 
based) compilers can overcome some pf the 
disadvantages noted by including an 
equally sophisticated debug program that 
is aware of where variables** are stored 
in memory, where program lines have been 
compiled, etc. This can produce an 
interactive debugger with trace capa- 
bilities similar to an interpreter. 
Even the best of such debuggers still 
cannot make program modification as easy 
as an interpreter can. 

One Pass Compilers are often a good 
choice for microcomputer systems, 
especially those without a disk. They 
read the source code** only once, sim- 
plifying input from serial devices such 
as teletypes and cassettes. Neverthe- 
less, the better ones are often capable 
of local optimization** on at least a 
per-statement basis. On a system with 
a given amount of memory, one-pass com- 
pilers often cannot handle source prog- 
rams as large as those compiled by other 
techniques; this is especially true if 
the compiler is expected to output its 
object code** directly to memory instead 
of to a mass storage device. 

An extremely good one-pass com- 
piler is a true example of the system 
designer's (and programmer's) art: 
after all, such a compiler is actually 
performing several functions at once 
(see next section). 

The Microsoft-produced Fortran 
IV Compiler for the 8080 and Z80 is a 
one pass compiler. It is available from 
several sources now, including Cromemco 
and, of course, Microsoft. 

One Pass plus Assembly Compiler . This 
is also a type of compiler that reads 
the user' s source code only once. But 
it then produces an assembly language 
intermediate "source" program which 
then must be assembled by a more or less 
standard one or two pass assembler**. 

The chief advantage of this type 
of compiler is that it is the easiest 
kind to design and implement! In fact, 
given a system with a good macro-assembler, 
an enormous amount of "housekeeping" is 
removed from the compiler-writer's 
bailiwick. 

Often, this type of compiler 
will do little or no optimizing. The 
extra passes through the assembler can 
be a nuisance to the user if not fully 
I automated. 

1 On the other hand, the person 
1 familiar with assembly language can 
1 often take advantage of the availability 
I of the assembler listing and thereby 
I significantly reduce debugging time. 



Also, since the compiler is simpler, it 
generally requires less memory to run than 
a one-pass type. If the assembler used is 
similarly compact, significant memory savings 
may be realized at the expense of compile 
time. 

An interesting note here is that 
Data General's Fortran IV compiler is a 
one-pass-plus-assembly type (two pass 
assembly, at that) and was, for quite some 
time, the only Fortran compiler offered by 
the company! This contrasts sharply with 
their "Fortran V" compiler discussed in the 
next section. 

Sidelight: one pass plus assembly 
type compilers were especially popular in 
machines of a few years back because of their 
reduced memory requirements. When memory 
was extraordinarily expensive and disks 
were cheap (compared to memory), the approach 
made a lot more sense than it does in today's 
cheap-memory market. 

Multi-Pass Compilers. These compilers, as 
their generic name implies, must read the 
user's source program several times before 
producing machine code output. 

The primary reason for writing a 
multi-pass compiler is usually to facilitate 
global optimization**. They are typically 
capable of significantly more efficient 
object code than the one-pass types (though 
some two-pass compilers might only be sim- 
plifications of one-pass types). The object 
code may or may not be more compact, but 
it is virtually always significantly faster 
at execution time. 

The only real disadvantages of multi- 
pass compilers is that the compiler itself 
is usually a huge program which requires 
much machine time to operate. A secondary 
disadvantage is that once global optimization 
has taken place the dis-assembled object 
code might in no way resemble the input source: 
this can be a real handicap at debug time, 
especially if the compiler has a bug in it! 
(Which actually happened to this author.) 

IBM's Fortran Level H is an example 
of a multi-pass optimizing compiler. In 
fact, with this compiler, the user may even 
specify one of three of levels of optimization 
to be attempted. Data General's Fortran V 
compiler is rumored (rumored!) to be a thirteen 
pass optimizing compiler. In any case^ it 
produces remarkably efficient code for 1 a 
minicomputer compiler. 

Some Interim Notes 

Before proceeding to a description 
of types of interpreters, a comment on the 
compiler versus interpreter controversy seems 
appropriate. 

Generally speaking, the only programs 
that really need computational speed are 



WEST COAST COMPUTER FAIRE 



452 



BOX 1579, PALO ALTO CA 94302 



those doing a large amount of "number 
crunching". But, if a program involves 
any significant amount of floating-point 
arithmetic (especially transcendental func- 
tions), the time required to perform such 
routines is usually significantly more than 
the time spent on the supportive control 
functions. Similarly, programs involved 
in primarily I/O processing on devices 
no faster than floppy disks are generally 
seldom bound by the speed of the control 
operations being performed. 

So what kind of program really 
needs the extra measure of speed pro- 
vided by compilers versus the inter- 
preters? There really are many such 
programs: real-time process control, 
music processors, programs which need 
to run on memory-limited systems, and 
others. But the hobbyist should probably 
carefully consider whether the programs 
he is writing fall into any of these 
categories. If not, he should seriously 
consider using an interpreter, for 
reasons which will be noted in the next 
section. 

As a final note on compilers, 
it should be noted that one feature of 
Fortran compilers is they, may be made 
to process a particular subset of Fortran 
(ANSI standard Fortran), and other com- 
pilers on other systems should be able to 
handle the code with little or no modi- 
fication. 

Interpreters 

The primary difference between 
compilers and interpreters is that the 
latter were designed to facilitate inter- 
active computer usage while the former 
come to us from the days when batch pro- 
cessing represented the only computing 
power available. 

Generally, an interpreter will 
allow the user to sit down at his ter- 
minal and/or computer and enter a program 
one line at a time. He may enter several 
lines and then RUN the resultant partial 
program,, verifying that it is performing 
the function assigned to it. He may pro- 
ceed in this manner, adding a few program 
lines at a time and checking that they 
function properly, until the whole pro- 
gram is entered and checked. 

Depending on the interpreter 
being used, several additional aids to 
debugging may be available: Most Basics 
allow the user to execute several (if not 
most) statements in an immediate or 
direct mode. For example, in Cromemco 
Basic, only the DATA, DEF (user function), 
and FOR/NEXT statements may not be directly 
executed. Virtually all interpreters 



allow the user to halt program execution 
through some break or escape key, after 
which he may examine the value of variables, 
status of flags, etc. Many basics even 
allow the user to change, delete, and in- 
sert program lines after executing such 
a break and then continue execution of 
the modified program! 

But various types of interpreters 
have varying abilities, some of which are 
discussed in the sections which follow. 

Unaltered Source is a term used herein 
to mean that the program as actually 
typed in by the user is stored in essen- 
tially unaltered form (i.e., extraneous 
spaces might have been removed, etc.) in 
memory. The interpreter then executes 
statements by actually reading the source 
and operating on the commands therein. 
No validity check is made on the source 
until execution is attempted. Some sys- 
tems use this "feature" to advantage: 
since no checking is performed, any data 
may be entered and treated as a program 
line. Since Basic (for example) will 
rearrange incoming lines in numerical order, 
this allows the user to implement a poor 
man's text editor. 

The disadvantages of this method 
of interpretation are numerous: chief of which 
is relatively slow execution speed (although 
even here a clever designer can earn his 
money). Another significant problem is 
that the user has no idea that he has made 
an error in entering a line until it is 
actually executed, which may not occur 
for some time in a complex program. 

There are several so-called 
"tiny Basics" available which are imple- 
mented in this fashion. Despite their 
name, many of these Basics actually can 
handle some very sophisticated programs. 

Keyword Token (or Partially Syntaxed) . This 
term is used to classify a type of inter- 
preter that scans incoming lines of pro- 
gram for the keywords defined in the syntax** 
of the language, converting them to internal 
format bytes (tokens). However, a Basic 
interpreter of this type is liable to allow 
a statement of the following form without even 
protesting about the utter nonsense of it: 

100 NEXTSTEPFORPRINT 
Such a Basic would be very likely to list 
that statement back out as: 

100 NEXT STEP FOR PRINT 
It was capable of recognizing all those 
keywords, but did not realize that they 
were used incorrectly. (Of course, the 
nonsense would be found at execution time 
and an error message would result.) It 
seems obvious, then, that in some ways 
there is little advantage in this type of 



WEST COAST COMPUTER FAIRE 



453 



BOX 1579, PALO ALTO CA 94302 



interpreter versus the unaltered source 
variety. Were we only concerned with 
validity checking, that would be true; 
however, the keyword token concept allows 
somewhat higher execution speeds, since 
there are fewer bytes to scan to deter- 
mine statement type and since the appro- 
priate keyword token can immediately vec- 
tor off to its processing routine rather 
than having to first decode it and then 
vector.** 

Both the keyword token and un- 
altered source interpreters are capable 
of performing all their feats in the 
direct mode, although many interpreters 
nevertheless exclude certain functions 
as direct because they may not truly 
make sense unless executed within a 
running program. 

Many, many of the available 
microprocessor Basic's are of the 
keyword token type. Prime examples 
are most (all???) of the Basic 
interpreters written by Microsoft, 
including, as a specific example, 
Applesoft as distributed by Apple 
Computer . 

A sidelight: This type of 
interpreter is popular with system 
programmers because it is reasonably 
fast at execution and yet does not re- 
quire the double level of complexity 
necessary to the type of interpreter 
discussed next. Shepardson Micro- 
systems, for example, felt much more 
constrained in space than in speed 
when its 6800 Basic was designed, and 
hence chose this method. 

Fully Syntaxed is a term used to describe 
a type of interpreter which actually 
completely takes apart the user's input 
line and reassembles the pieces as in- 
ternal codes (tokens), checking for syntax 
errors right then and there. As an ex- 
ample, assume a Basic which accepts 
only standard Dartmouth variable names 
(single letter, optionally followed by 
a single numeral); consider the result 
when the user enters the following line: 

530 PRINT FORB 
The keyword token type interpreter will 
most probably syntax that as: 

530 PRINT FOR B 
It sees the keyword "FOR" and processes 
no further. The fully syntaxed type of 
interpreter, however, would realize that 
a FOR keyword cannot appear after a PRINT 
statement. Depending on whether the in- 
terpreter in question allowed logical 
expressions using the keyword OR, it 
might syntax that line as: 

530 PRINT F OR B 
If , however, it did not allow logical 
operators, it would flag that statement 



as being in error. Another level of com- 
plexity is added to the problem if the 
interpreter allows both logical operators 
and long variable names: is FORB the var- 
iable "FORB" or is it the expression "F OR B"? 
Since both constructs are legal, it is the 
designer's job to decide on one or the other 
and then clearly state his choice in the 
user's manual. 

Generally, a fully syn taxing in- 
terpreter enjoys all the advantages of 
the keyword token type (i.e., faster ex- 
ecution speed through token vectoring) plus 
the added advantage that the user is made 
aware of his syntax errors as soon as he 
types them in. 

An example of this style of inter- 
preter is Apple Basic, the integer-only 
Basic placed in ROM in the APPLE II. This 
is a Basic complete and fast enough to 
enable the user to program video games 
directly in Basic. 

Incremental Compiler is actually a type 
of interpreter which takes the fully- 
syn taxed concept a step further. An in- 
cremental compiler not only fully checks 
for correct syntax as the source is being 
entered, it also immediately resolves 
any references to undefined items! The 
internal code produced may or may not be 
actual machine language; in fact, it is 
more likely that a more generalized form 
of tokens will be produced. 

The CR0MEMC0 16K BASIC interpreter 
is an incremental compiler, and details 
on its inner workings will follow in later 
sections. Another example of this type 
is Data General's Basic. 

The primary advantage of the 
incremental compiler is execution speed. 
Since variable and line number references 
are already resolved, no execution time 
is spent searching tables for (for example) 
variable name match. User's of Cromemco's 
Basic enjoy excellent execution speed even 
though the system provides them with as 
many, if not more, features as any other 
microprocessor-based Basic. 

The primary disadvantage of this 
type of interpreter is that the interpreter 
itself requires significantly more memory 
than other types. For example, Cromemco's 
Basic requires 16K bytes for the stand-alone 
version and somewhat more for the disk-based. 

Compile and Go is a type of interpreter 
which is often an interpreter in name only. 
Some of this type might be more accurately 
described as interactive compilers. A 
typical method of implementation involves 
a two-step interpreter: the first part 
functions only as an editor, allowing the 
user to change his program. It may or may 
not be a partially or fully syntaxing editor. 



WEST COAST COMPUTER FAIRE 



454 



BOX 1579. PALO ALTO CA 94302 



The second part of this interpreter is 
the actual compile-and-go part: it 
accepts the edited source (which may 
have even been converted into tokens 
for ease of compiling) and resolves 
all line number and variable references 
and then runs the resultant object. 
This type of interpreter is easy to 
recognize: it is the type that, when 
the user types RUN^responds immediately 
with error messages regarding missing 
END statements, GOTOs to non-existant 
lines, etc. (The other interpreters 
discussed usually cannot give these 
error messages until the line in ques- 
tion is actually executed.) 

The obvious advantage of this 
type of interpreter is that it is 
fast . The HP2000 series time-shared 
BASIC systems use this methodology 
and are often able to successfully 
support significantly more users than 
(for example) Data General can with its 
incremental compiler, even though the 
DG machine may be faster and more pow- 
erful than the HP CPU. 

The biggest disadvantage of 
the compile-and-go interpreter is that 
usually very few operations are avail- 
able in direct (immediate) mode. On 
the HP2000F and below, for example, the 
user cannot even print out the values 
of variables after encountering a pro- 
gram break or error. In this respect, 
the user is often more uninformed than 
he would be with even a straight compi- 
ler, and debugging can sometimes be 
somewhat time-consuming. 

More On Interpreters 

We have seen that the primary 
advantages of interpreters over compi- 
lers are in the area of user interaction 
and debugging. Their major disadvantage 
lies in their memory requirements: not 
only must the interpreter be memory 
resident, even tokened source code tends 
to occupy more space than truly compiled 
code. Of course, speed is also a con- 
sideration; but many, this author in- 
cluded, feel that speed is often not 
overwhelmingly important in hobbyist 
applications. Of course, nobody likes 
to wait forever for a program run, and 
so Cromemco Basic was designed to be 
as efficient as possible while retaining 
virtually all other desirable features. 

Another point worth mentioning 
is that memory prices are still drop- 
ping at a fantastic rate, so complex 
programs are coming into the reach of 
more and more people. 

And finally, with regards to 
what can be called ^ the state of the 

WEST COAST COMPUTER FAIRE 



art in microprocessor-based BASIC inter- 
preters: Watch this space. 

CROMEMCO 16K BASIC 

The name of this interpreter is 
somewhat of a misnomer in the case of the 
disk-based version: it currently occupies 
18. 5K and is likely to grow. Cromemco 
Basic was designed from the start to be 
many things for many people. It can def- 
initely be considered a business-oriented 
product: it has easily accessible random 
and sequential files, three different 
precisions of arithmetic (including 14 
digit decimal floating-point) , and user- 
program trappable processing of errors 
and escape requests. All this was accom- 
plished with little sacrifice in speed: 
the interpreter handles double-precision 
arithmetic as fast as most interpreters 
do single-precision. Of course, all these 
features added to the memory requirements, 
but the biggest memory-eater was the imple- 
mentation used, namely the incremental 
compiler method. 

An incremental compiler requires 
a number of tables both in the code of 
the interpreter and in user program space. 
These tables will be discussed in later 
sections and then an example program line 
will be followed through the entry and 
execution phases . 

Syntax Related Tables 

As each program line (or direct 
command statement) is entered from the 
keyboard (or some other I/O device) , it 
is checked for correct language syntax 
and converted into an internal format. 
Actually, the routine which does the 
syntax checking also converts source items 
into internal "tokens" at the same time. 

Basic's syntaxer is actually driven 
by a set of syntax tables, the purposes 
of which are described following. 

The Reserved Name Table contains a list 
of all statement, function, and operator 
names that are recognized by Basic. This 
table is used to equate the user's ASCII 
input to a particular internal token. 
Thus, in addition to the reserved name, 
each entry contains the token to be used. 

The Main Syntax Table. Once the first 
reserved name in a statement has been found, 
the statement may be classified as to type. 
The type directs Basic to an entry in the 
main syntax table, where an entry is simply 
made up of a list of required and/or op- 
tional further items (actually their equated 
tokens) that must be found in the statement. 
If a required item is not found in the 



455 



BOX 1579, PALO ALTO CA 94302 



I proper position in the input line, a 
I syntax error is generated. This table 
I is really quite complex, as even such 
I things as arithmetic expressions in all 
I their variations must be covered. There 
I are even syntax subroutines included 
here, so that a statement type may re- 
quire (for example) a subscripted string 
name by calling for a subroutine which 
in turn requires a string variable, a 
left parenthesis, subscripts, and a 
right parenthesis. (Please note that 
this is not actually how the search is 
performed; it is actually more segmented 
and more highly organized than stated 
here. ) 

The syntax table contains other 
information about statement types, such 
as whether they are allowed in direct 
mode, within a program, or both places. 
It can also declare that a statement must 
be the last one in a line or that sub- 
sequent statements on the same line are 
permitted. 

The Binding Strength Table is more 
properly described as a run- time table, 
since it determines the priority in 
which operators (+,-,AND,NOT,etc.) are 
to be executed. It is included here 
because it is used to relate the internal 
tokens for the various operators to their 
priorities. 

On Listing a Program 

After a program has been con- 
verted to internal token form, it is 
obviously desirable to be able to imple- 
ment the LIST statement. On unaltered 
source types of interpreters, this is 
simply a matter of dumping the memory 
contents back out to the list device. 
In Cromemco Basic, the problem is signif- 
icantly more complex: Each token must 
be reconverted to its ASCII form and (as 
we shall see later) constants must be 
reconverted to external format. 

Tables in User Program Memory Space 

Generally, these types of 
tables may be referred to as "run- 
time" tables, though many of them 
are established at program entry time. 
They are the fundamental tables which 
the interpreter uses in executing a 
user program. 

The Statement Table is not strictly 
speaking a table. It is simply an 
area of memory where all program lines 
are stored after they have been conver- 
ted to internal format. The most dis- 
tinguishing feature of this table in 

WEST COAST COMPUTER FAIRE 



Cromemco Basic is that the last line en- 
tered is always at the end of the table. 
Only when a line is deleted or modified 
is it necessary to "slide" the table (in 
order to recover the space occupied by 
the deleted parts). Also note that the 
program's line numbers are not stored 
in the statement table. Instead, the 
line numbers are found in the 

Line Number Table. This table is also 
known as the Label Table. Herein are 
stored the actual line numbers. Also 
in this table each entry has the address 
of the beginning of its corresponding pro- 
gram line within the statement table. 
The third item in each entry in this table 
is the address within the table of the 
next logical succeeding line (i.e., the 
line next to be executed unless program 
flow is altered by a GOTO, GOSUB, or 
NEXT statement) . Note the implication 
here: even this table is not organized 
in line number order! As each new line 
is entered, its label entry is simply 
appended to the table and the logical 
successor pointers are updated as needed. 



456 



Variable Table. When a variable is first 
defined (which occurs as the first line 
usingy[is entered ) , an entry is created 
for it in this table. Types of informa- 
tion contained herein are many: All var- 
iables have their name ('Al ' , 'A$' , 'E' ) and 
variable type (string, integer, short or 
long floating point, and/or array) stored 
here. In addition, scalar variables (non- 
array numerics) have their actual value 
stored here. Strings have their dimension 
and current length stored also. Arrays 
have the number of dimensions in use noted 
as well as the maximum value of each dim- 
ension. In addition, arrays and string 
entries contain the address of the actual 
location of the data for each. The data 
so addressed is located within the 

String/Array Table. Again, this "table" 
is not so much a table as simply a sec- 
tion of memory reserved for the storage 
of array and string data. Of the tables 
mentioned so far, this one is unique in 
that is is allocated (expanded) at run- 
time. That is, since statements of the form 

310 INPUT J 

320 DIM A$(J) 3 B3(J,2) 
are legal, arrays and strings cannot have 
their space allocated to them until they 
are actually dimensioned during program 
execution. 

The For /Next Table. An entry is placed 
in this table whenever a FOR statement is 
encountered. Information kept here includes 
the address of the corresponding variable 

BOX 1579, PALO ALTO CA 94302 



table entry, the size of STEP requested 
(or implied), the terminating TO value, 
and the address of the entry in the label 
table corresponding to the line logically 
following the FOR statement. If a FOR 
statement is executed using a variable 
with an entry already stored in the FOR/ 
NEXT table, the old entry is deleted, the 
table is adjusted, and the new entry is 
appended. 

GOSUB/RETURN Table. A very simple table, 
this consists simply of the address of an 
entry in the label table which corresponds 
to the line logically following the GOSUB 
statement. 

User-Defined Functions Table. Since only 
user-defined functions FNA through FNZ are 
allowed in Cromemco Basic, this is a fixed 
length table with 26 entries, each active 
one of which contains the address of the 
label table entry corresponding to the line 
where the function was defined. 

AN EXAMPLE 

There follows an actual example 
of what happens internal to Cromemco Basic 
when a program line is entered (syntax time) 
and then executed (run time). It is assumed 
that any existing program and /or data has 
been removed via a SCRatch command and that 
the example line shown is the first (and 
only, though this is not significant) line 
entered towards creating a new program. 

Herewith the example line: 

100 IF A2 = 3.7 THEN 300 



Syntax Time 

The first thing detected is the 
line number, '100'. This line number is 
placed in the label table along with the 
address of the beginning of the statement 
table (where the encoded line will be 
stored) . Since this is the only entry in 
the label table, the successor pointer will 
be set to zero to indicate no successor. 
Since the label table works from the top 
down, the pointer to the bottom of the 
table would be updated to indicate where 
to place the next entry. So far, then, 
the label table looks something like this: 
2 bytes — pointer to statement in 
statement table 

2 bytes — pointer to successor label 

(zero, currently) 

3 bytes — the line number, 100, in 

BCD (5 digits significant) 

Next, the keyword 'IF 1 is encountered 
and recognized as a valid statement type. 



It is translated to a single byte internal 
token and the syntax table entry for 'IF' 
is accessed. The syntax for 'IF 1 requires 
that the keyword be followed by an arith- 
metic expression, so the appropriate syntax 
subroutine is called. 

Without going into detail as to 
what is a valid arithmetic expression, and 
how the syntaxer determines that it has or 
has not encountered one, it is sufficient 
to note that certainly 'A2 = 3.7' would 
be considered valid. That being so, 
the variable 'A2' makes its first appearance 
and must be added to the variable table. 
It's entry would look something like this: 
2 bytes — the variable name ('A2') 
1 byte — the variable type, assume 

a 02, short floating point 
4 bytes — the actual value of the 
variable, in the length 
required for its type... 
set to zero until altered 

The statement table would receive a byte 
signifying that a numeric variable had been 
found followed by two bytes which are the 
address of the entry for 'A2' within the 
variable table. 

The equals sign ('=') would be 
recognized as an operator, and its internal 
code stored next in the statement table. 

The value '3.7' would be recognized 
as a floating-point constant (integer 
constants don't have decimal points), and 
a routine would be called to translate it 
to internal format. The statement table 
would receive a byte signifying a particular 
type of constant (short-floating here) fol- 
lowed 9 and then the internal constant would 
be stored. 

The 'IF' syntax requires that the 
expression be followed by a 'THEN' keyword. 
When it is found, its internal token is 
stored in the statement table. 

'THEN' may be followed by either 
another whole new statement or (as in this 
case) by a line number. The processing of 
this line number is partly what qualifies 
the Cromemco Basic interpreter to be called 
an incremental compiler. 

The lable tabel is scanned for a 
line number '300'. When it is not found, 
an entry is made for it similar to the one 
previously made for line '100'. However, 
for line number 300, the address of its 
corresponding line in the statement table 
is set to an illegal value to indicate that 
it doesn't exist! (But, later, if a line 
300 were entered, the addressed would be 
changed to reflect the fact.) Also, the 
entry for line 100 is updated to reflect 
that its logical successor is line 300 
(the next sequentially numbered line) . 

The statement table receives a token 
to indicate that a label table address 



WEST COAST COMPUTER FAIRE 



457 



BOX 1579, PALO ALTO CA 94302 



will follow, and then the address of the 
label table entry for line '300' is 
stored. Finally, a byte of zero (00) 
is stored to indicate the end of line. 

At this point, then, the statement 
table will contain the following: 

1 byte — token for the 'IF' 

1 byte — token, a variable table 

address follows 

2 bytes — the variable table address 

for 'A2' 
1 byte — token for '=' 
1 byte — contains 02 hex to indicate 

that a short floating 

point constant follows 
4 bytes — the internal form of the 

constant '3.7' 
1 byte — token for 'THEN' 

1 byte — token, a label table address 

follows 

2 bytes — label table address for 

line number 300 
1 byte — value 00 hex, indicates 
end of line 



Run Time 

Assume now that the user requested a 
RUN of the program (and, incidentally, even 
this simple statement must go through the 
syntax process before it is executed!) 

Basic searches out the first logical 
line of the program from the label table 
and then performs the following steps: 

First, the address of the statement 
within the statement table is found. Then 
the first byte of the statement .is... used.. to 
vector to the routine responsible for pro- 
cessing IF statements. 

The 'IF' processor knows that what 
follows is an expression, so it callsthe 
expression execution routine to evaluate 
*A2 = 3.7'. 

The expression evaluator notes that 
the first item is a variable, so it uses 
the variable address to extract the value 
of the variable from the variable table 
entry for 'A2'. It places this value in 
an area of memory referred to as the argu- 
ment stack. 

The ' = ' operator (note: this is not 
the same thing as the assignment operator 
'=' used in LET statements) is then pushed 
onto another Basic-maintained stack known 
as the operator stack. 

The constant token causes the short 
floating point constant '3.7' to also 
be placed on the argument stack. 

Since there is no more to the expres- 
sion, the expression evaluator calls on 
the processing routine for the equal oper- 
ator. The equality processing routine 
extracts the two values (contents of 



'A2' and the value '3.7') and returns either 
a one (1) if they are equal or a zero (0) 
if they are not. The expression evaluator 
is finished and returns with this value to 
the 'IF' processor. 

At this point let us examine what 
happens if the value returned is ' 1' (which 
it can't be in our example). The 'IF' 
processor ignores the "THEN 1 token (it has 
to be there, the syntaxer passed it!) and 
encounters the label table token. This 
implies a change in program flow to the 
line specified in the table entry. So the 
'IF' processor simply places the entry en- 
countered in Basic's own 'next logical 
statement' location. It then checks to 
ensure that a line really exists to corres- 
pond to the entry. Lo and behold, the 
line does not exist and Basic issues the 
error message, "GOTO UNDEFINED LINE NUMBER". 

Now backtrack a bit and assume that 
the expression evaluator had returned with 
a '0' instead (which it would in our example) 
In this case, the 'IF' processor simply 
aborts processing of its line and returns 
to allow Basic to execute the next logical 
line. When Basic encounters the next log- 
ical line ('300' in our example) it checks 
to see if the line exists (it doesn't here) 
and executes it if it does. If it does not, 
Basic ignores the line and "falls through" 
to the next logical line. Since line 300 
does not exist, and since there is no 
logical successor Basic would print out 
"***END***". 

Summary 

The idea behind presenting this 

example was that in so doing the reader 
might be presented with a better under- 
standing of the beneficial effects of 
the incremental compiler. 

In many Basics, several operations 
described herein would have proceeded much 
differently. As examples, the variable 
'A2' might cause a sequential scan through 
a variable table looking for a match on 
the ASCII characters; the constant '3.7' 
might have to be converted from ASCII to 
internal format; and the processor might 
have had to sequentially search lines in 
order to locate line number 300. 

In Cromemco Basic, there is no speed 
penalty for using any and as many variables 
wherever desired in the program, there is 
no reason to put certain statements (i.e., 
subroutines) first in the program, and 
constants in programs execute as fast or 
faster than variables. 

No attempt has been made here to 
explore the various features of Cromemco 
Basic. This paper was intended primarily 
to show why the particular interpreter 
design used was chosen. 



WEST COAST COMPUTER FA1RE 



458 



BOX 1579, PALO ALTO CA 94302 



GLOSSARY 



V 

■ There follows a glossary of 

I some of the more complex terms as well 

I as some of the terms with implied meanings 

I as used in the body of this paper. 

Assemblers, One and Two Pass. Assemblers 
are language processors of sorts that 
translate assembly language into machine 
code. One pass assemblers usually must 
either play "tricks" or put limitations 
on the user in order to function. When 
a one-pass compiler is implemented, it 
must actually perform the functions of 
interpreter and assembler, all in one pass. 
Suffice to say this implies several 
programming tricks. When a one-pass- 
plus-assembly compiler is implemented, 
in often uses a macro assembler for the 
assembly phase, thus allowing the compiler 
writer to generate his own intermediate 
languages-sensitive code which the assembler 
is "taught" to recognize. 

Source and Object Code. Generally, source 
code is the original typed (keypunched, 
handwritten, etc.) program as entered into 
the machine, stored in characters recog- 
nizable to the language processor (ASCII 
representation is almost universally used 
for microcomputers). As a special case, 
though, Basic often considers source code 
to be what the user entered after it has 
been stripped of blanks (spaces) since the 
original Dartmouth Basic was not sensitive 
to the presence of blanks. 

Object code might mean the actual 
machine code output by an assembler or 
compiler, the intermediate code output 
by a one-pass-plus-assembly compiler, or 
even the internal token form output by the 
first phase of a Basic interpreter of the 
keyword-token or incremental compiler variety. 

Optimization refers to a technique often 
found in compilers whereby like expres- 
sions are recognized and extracted from 
more complex expressions, statements, pro- 
gram loops, and even whole programs. Fox 
example, even most moderately good compilers 
could optimize the following: 

B(J-hK-l) = B(J+K-1) + 1 
The sub-expression '(J+K-l)' would be cal- 
culated before any other part of the line 
is executed. 

A somewhat better optimizer would 
be able to treat that expression as simply: 
INCREMENT B (J+K-l) BY 1 

Generally, Local Optimization refers 
to that done within a single expression (or 
statement, etc.) while Global Optimization 
refers to broader, multi-line or even multi- 
subprogram optimizing. 



WEST COAST COMPUTER FAIRE 459 



Syntax Checking refers to the process of 
validating the executability of a (set of) 
statement (s). In other words, the language 
processor must ensure that the statements 
given to it follow the rules of the 'grammar' 
of the language which it compiles/interprets. 
For example, the statement 

701 FOR I = 5 TO 100 STEP 5 
may work great in Basic, but a Fortran com- 
piler would get lost after the first three 
or four characters and should give the user 
a "syntax error" message to tell him something 
is amiss. 

"Syntax" is used loosely within this 
paper as a noun and verb in various forms, 
and where appropriate should be thought of 
as "Syntax Checking". 

Vector , as used herein, refers to the 
technique of using a code or coded value 
to access a table of similarly encoded items, 
the idea being to choose from several possib- 
ilities. For example, a one byte code could 
be used to "vector" into a table of 256 
different addresses, each of which might 
represent a different statement type, function 
to be performed, etc. 



The author would like to acknowledge the , 
permission of Cromemco, Inc., owner of 
the 16K BASIC described herein, to divulge 
the details of their product. 

PLEASE NOTE that Cromemco is the owner of 
this language, although produced by 
Shepardson Microsystems, Inc.,. and any 
requests for copies of the interpreter, 
documentation, or simply more general 
information must be addressed to them. 

Shepardson Microsystems is the owner of the 
6800 Basic noted herein, but it is currently 
available only on an OEM basis. 

Inquiries about the design philosophy, etc., 
of these and other software products are 
invited, and comments on any of the foregoing 
would be very much appreciated. 



BOX 1579, PALO ALTO CA 94302 



AN ARITHMETIC EVALUATOR FOR THE SAM-76 
LANGUAGE 

Karl Nicholas 

Box 257, Route 1 

Pennington NJ 08534 



II 

II 



Arithmetic Evaluator - Karl Nicholas 



II 

II 

.J.I 



This example demonstrates two basic algorithms; substitution and a bit of 
systematic juggling. What this example does is enable the user to express 
equations in a format approaching that of APL however still completely 
compatible with SAM76 of course. The user invokes "EXP" (expression)* 
arithmetic expression = value. One can get the expression scanned in either 
direction by using neutral or active fetches. A normal active fetch will 
give a normal left to right scan. For an example of the left to right 
scanner: 

n 

{} %EXP,2+10\2/=6 
{> 

or an example of the right to left scanner: 

o 

{} &EXP,2+10\2/=7 
{> 

or to get what you want from either scanner: 

V 

{} %EXP,2+{10\2}/=7 
{} 



As you can seer hierarchy is established by use of curly braces# they can be 
infinitely nested , of course- The user defines all other functions by use of 
the "define" function. This function creates two simultaneous lists where in 
the first is the symbol to be used in the evaluator and in the second is the 
SAM76 function or user defined function to be substituted in its place- The 
user invokes "define", first list append, second list append. For example: 



{■>■ 




o 


%define,+,ad/= 


{> 


% define A, di/= 


{} 


%vt,listl/= 


<> 


,+,\ 


{> 


%vt,list2/= 


{} 


, ( ,ad,) , ( ,di,) 


{} 





WEST COAST COMPUTER FAIRE 



460 



BOX 1579, PALO ALTO CA 94302 



This will cover the functions used in the previous example, n view i£Xu on 
define reveals: 

t> 

{} %vt,define/= 

<} %dt,listl,&ft,listl/(,([l]))A 

{} %dt,list2,&ft,list2/(,(,[2],))/ 

{} 



This one is simple; the extra commas in list2 are there to separate numbers 
from functions for the evaluator,- 



The procedure that tests for the neutral and does the substituting is "EXP* 
Looking at it we see: 



n - 

{} %vt,EXP/= 

{} %ni,* 

< } (%dt, arith, ( [1] )/%pt,arith, {, }%ft,listl//* 

<> %EXPll,%arith,<%EXPll,>,<A%ft,list2///),' 

{ } (%dt,arith» ( [1] ) /%pt, arith, {, }%ft,listl/A 

{} %EXPl,%arith,<%EXPl,>,</>%ft,list2///)/ 

{> 



The first thing "EXP" does is test to see if the fetch to "EXP" was neutral 
or not- In both cases it defines text arith as what ever was after "EXP" 
then partitions out of arith the curly braces and all listl symbols- After 
that it fetches which ever evaluator it' s supposed to depending on the 
neutral implied, substituting arith with commas in between all numbers and 
list2 replacement functions. The procedure that does all the evaluating is 
either "EXP1" or "EXP11". "EXP11" evaluates from right to left and to see 
what it does we will do a view text on it: 

tl ' ' 

{} %vt,EXPll/= 

{} %ii, [2] , , [1] , (%[2] , [1] , %EXP11 [#3]//)/ 

O 

This is very similar to the recursive algorithms except that the numbers and 
functions are user defined in each case. "EXPl" then evaluates from left to 
right. A view text on it gives: 

n 

{} %vt,EXPl/= 

{} %ii,[2],,[l],(%EXPl,%[2],[l],[3]/[#4]/)/ 

{} 



WEST COAST COMPUTER FA1RE 461 BOX 1579, PALO ALTO CA 94302 



This time it takes the first set of numbers and function and evaluates it 
than loops back on itself until only a nunber is left. If you want to use an 
user defined functions make sure you follow the same format as always. 
( number FUNCTIONnumber) If the function only requires one number it must be 
enclosed in curly braces because no other form of hierarchy is programmed 
in- 



In this section I would like to just go to the 
teleprinter and show some examples using this 
evaluator. Remember everything that has been defined 
in this section is still here and valid. My main 
example will be simulating APL sort of. Anyway on with the show: 



II 
II 
ti- 



ll 

Examples 1 1 

LI 



%dt,FAC, !%ii,q2, , 1, (%mu,q2, %FAC, , %su,q2, 1///)////////= 

%pt,FAC,,q2////= 

%define,~,exp/= 

%define, ((?!), FAC/= 

%define, ( @# ) ,mm/= 

%define,*,mu/= 

%define,-,su/= 

%dt , APL , ! %ca , %xc , 0D//%ut , * * /%apl///= 

%dt,**,!%os, 

EXIT/%ri///= 

%dt,apl, !%os, 

/%os, 
%SXP,&IS///%apl///= 
%APL/= 

3+3 



5+3-2*3\9 

3#27 

2~8 



2 

3 

256 

•100 
9332621 54439441 5268169923885626670049071 59682 
643816214685929638952175999932299156089414639 
761 565182862 536979208272237582 511852109168640 
00000000000000000000000 

!200 
EXIT 



To make clear how I exited, because it is a little tricky , I defined a user 
trap that means that when a delete code was hit during a multiply function 
the text "**" was executed. With a little imagination one can get closer and 
closer to real APL but never all the way there because functions don't come 
before multiply and divide and so on. However let me see you simulate APL 
with a different kind of language, especially one that gets a factorial of 
one hundred with ALL significant figures. 



WEST COAST COMPUTER FAIRE 



462 



BOX 1579, PALO ALTO CA 94302 



APPENDIX 



Beginner's - Part I - Operation and Syntax 



II. 



II 
II 



The SAM76 language deals mostly with the manipulation of text. It is 
designed for use through a reactive machine such as a personal computer such 
as a "home reckoner" set. 

The language design has the structure to allow interaction of functions 
resident in the machine with expressions, scripts or procedures written by 
the user; in this manner the language gives the user an unusual amount of 
flexibility ei6 freedom for invention and extension. 

The syntax consists first of a "warning character" followed by the 
expression itself then terminated by a different second "syntax marker"; in 
the following discussion the "warning characters used will be one of the 
following three: % - percent sign, & - ampersand or ! - exclamation mark; 
the "syntax marker" will be the / - slant sign for example: 



%. 



./ or & / or else 



./ 



The foregoing three examples represent 
expressions used in the SAM76 language and 
"active", "neutral" or "protected" expressions; 
three types will be explained later. 



respectively the three types of 

are known respectively as 

the significance of the 



The expression itself is made up of arguments which are separated by commas. 
The first argument designates the action to be taken. If this first argument 
consists of two or three alphabetic characters, the action to be taken may 
well be one defined as a function built in to the language or otherwise a 
language primitive function. Each argument following contains text or data 
to be dealt with by the action taken within the execution of the expression. 

For instance we wish to add two and four; consequently we type everything in 
the following example up to and including the "=" equal sign which tells the 
computer to do its thing: 



XT 

<> 

<} 



%ad,2,4/=6 



The two letter code "ad" signifies the primitive of addition* Upon 
execution, which was initiated by the equal sign after the slant sign, the 
value of the second argument or 2 was added to the value of the third or 4. 
Then the value computed is outputted. The system then returns to a waiting 
condition known as the idling program which identifies itself by moving the 
"cursor" or printer to the beginning of the next line. 

The idling program is actually the following expression: 

%os, %is// 

When starting, the innermost expression is located which contains an "is" 
primitive; "is" - or "input string" accepts input from the keyboard up to 
the reception of the current "activator" namely (in our case) the equal 
sign. The computer replaces the %is/ expression with this typed in text. Now 
the system goes back one level of nesting to the expression whose command 
was "os" or "output string"; this expression outputs the contents of the 
second argument which is now the text accepted from the keyboard, thus 
repeating what was typed in. For example: 



XT 

<> 

{> 



%os, %is//=ABC=ABC 



WEST COAST COMPUTER FAIRE 



463 



BOX 1579, PALO ALTO CA 94302 



In actual fact the expression "%os,%is//=" is executed everytime the idling 
program is loaded; it is not printed out and lives in what is known as the 
working area of the memory so actually the printed example should be: 



XT 

(} 

{} 



ABC=ABC 



It is important to be able to store text, script or procedures in memory. To 
this end the "dt" which is the mnemonic for the "define text" function is 
used. If we wish to define a text to be named "A" containing the words "AN 
APPLE" we type: 



o- 

{> 
{} 



%dt,A,AN APPLE/= 



Now stored in memory is a "text" named "A" containing the words "AN APPLE". 
To retrieve this information we "fetch" the "text" named "A"i and in this 
processs the second argument of the idling program will contain the words 
stored and the "os" will output the value returned in the fetching of "A" 
thusly: 



<} 
{} 



%ft,A/=AN APPLE 



When we defined the text "A" nothing was returned since "dt" does not return 
any value on execution. 

To Continue - "pt" or "partition text" removes one or more characters from a 
string and in its place sets markers which represent the value of the 
partition. 

o 

{} %pt,A,AN/= 

{> 

The second argument holds the name of the text to be dealt with; the third 
argument is the string of characters which if found in the "text" will be 
removed and replaced by partitions. Now to examine "A": 



o- 

{} 
{} 



%ft,A/= APPLE 



Note that "AN" is missing and nothing shows its presence because the 
expression that fetched "A" above did not require any partitions to be 
"plugged" in a manner to be shown later. 

We will now define another text to be named "B": 

n 

{} %dt,B,THE SHACK ON THE HILL/= 
O 

We partition that text on space: 

o 

{> %pt,B, /= 
<} 

WEST COAST COMPUTER FAIRE 464 BOX 1579, PALO ALTO CA 94302 



We fetch "B" and get: 



o 

{ } %f t , B/=THESHACKONTHEHILL 



Notice the spaces are omitted. 

"fe" or "fetch element" returns the contents of the text designated by the 
second argument; but on finding a partition it stops output. On the 
execution of the next "fe" on that text the next element of the text between 
partitions are returned: 



The first: 



o 

{} %fe,B/=^THE 
<} 



The second: 



n 

<} %fe,B/=SHACK 
<> 



The third: 

o 

<} %fe,B/=ON 
O 

It is very simple to find out where the partitions and the divider happen to 
be at any time by using the "vt" or "view text" primitive thus: 

O ' 

{} %vt,B/=THE[l]SHACK[l]ON[l] [ | ]THE[1JHILL 
O 

In this view of text "B" the partitions, all of value "1" are shown as 11] , 
and the location of the text divider is shown by [ | ] . 

At the end of the "text" there is nothing left to return: 

n 

<} %fe,B/= 

<> 

The gadget which remembers where one left off in the "text" is known as the 
"text divider"; each text has one of its own. This divider may be moved 
around by the execution of a a number of different primitives or may be 
ordered around through the use of the "md" - "move divider" function thus: 

o 

{} %md,B/= 
O 

will return the divider to the beginning or left end of the "text" named 
"B". 

WEST COAST COMPUTER FAIRE 465 BOX 1579, PALO ALTO CA 94302 



Now to explain how to replace the partitions in a text with characters; to 
do this we add arguments to the expression that is used to fetch the text. 
For instance if we wish to fetch "B" replacing the partitions with an 
asterisk: 

n - 

{ > %ft,B, */^THE*SHACK*ON*THE*HILL 



Now we can redefine "B" as this value retuned and in other words return it 
to the original: 

o 

{} %dt,B,%ft,B, //= 
{> 



If we now fetch "B" it would seem that the original has never been changed: 

o 

{} %ft,B/=*THE SHACK ON THE HILL 
{> 



Since the SAM76 language works from the inside to the outside of the 
expression , it first fetched "B** replacing the partitions with spaces; then 
on doing the next expression a "text" named "B" was defined (erasing the 
original and partitioned out version). This usage of interactive functions, 
primitives within primitives is called nesting. In theory this can be done 
to any depth - in other words it is limited only by the amount of memory 
available. 

Another example of nesting: 

o 

{} %dt,C,H/= 

{} %pt,B,%ft,C//= 

{} %ft,B/=*TE SACK ON TE ILL 

{> 



In the above example the text named "B" was partitioned on the basis of the 
characters received on fetching the text named "C". To return it to the 
original form we type: 

o 

{} %dt,B,%ft,B,%ft,C///= 
{} 



In the latter reconstitution, text "C" was first fetched then this in the 
act of fetching "B" was used to replace partitions found therein; the result 
was then the argument of the define text expression. 

At this time we will introduce a short cut in the act of "fetching". If the 
name of the text to be fetched is not the same as any of the primitives or 
built in functions then the first argument "ft" may be left out and the name 
of the text is used as the first argument of the expression. As we are using 
one character names for all our examples we can do this quite safely from 
now on. 



WEST COAST COMPUTER FAIRE 466 BOX 1579, PALO ALTO CA 94302 



In order to find out what the primitives in a system are you can do this by 
executing the "Sf" - "what function" command thus? 



O 

{} &@@f# /-{function list will be here} 
<> 



Observe the use of the & - ampersand instead of the % sign as a warning 
character to start the expression; also since @ is in its own right a 
warning character* it is protected by preceding it with a second @, and the 
space after the comma is used to tell the function what you wish to use to 
separate the individual function mnemonics from each other. 

The SAM76 language provides the ability of executing text strings and have 
the functions or expressions in that string executed. This is^ done by 
enclosing these executable expressions within the bounds of a protected 
expression" thus inhibiting execution at the time of definition. These 
protected expressions are also called procedures or scripts. 



o 

{ } %dt, D, • %pt,B, %C////= 

{> %D/= 

<} %B/=TE SACK ON TE ILL 



<} 



The fetching of "D" caused the execution of the procedure stored therein 
which in turn said - partition text "B" on the contents of "C". 

Next we can define a text that will restore "B" to its original state: 



n ' 

{ > %dt , E, ! %dt , B, %B, %C/////= 

<> %E/= 

{> %B/=THE SHACK ON THE HILL 

{> 



i - 



The part of the expression to be executed is enclosed between an 
exclamation mark and a / - slant sign showing an executable procedure. It is 
easy to go from here and let the expression call another expression or 
itself by simply fetching the text it is contained in. This ability of 
recursion lets individual strings act as "subroutine" expressions. 

There are two other ways of protecting procedures, besides using the i / 

form; these are by using ( ) or < > ; in this manner you can 

incorporate ! and / in your text without having them act as if they were 
warning characters. 

Let us now say that we wish to be able to fetch one string and have it 
partition out of "B" the contents of "C"; then output the contents of B 
and then restore "B" to its original form. To do this we need to use the 
"os" or "output string" primitive- This primitive outputs the contents of 
the second argument of its expression: 

o 

{} %os,ABC/=ABC 

o 

Now if we nest the expression that fetches "B" within the "os" expression, 
the contents of "B" will be displayed on execution: 

tr'~" 

< > %OS, %B//^THE SHACK ON THE HILL 

{> 1 „ , 

WEST COAST COMPUTER FAIRE 467 BOX 1579, PALO ALTO CA 94302 



We will now use "os" in an executable expresssion to display the contents of 
"B": 



\r 




<> 


%dt,F, ! %D/%os, %B//%E///= 


{> 


%F/=TE SACK ON TE HILL 


{> 





First on execution of "F", "D" was fetched. Execution of "D" caused the 
partitioning of "B" on the contents of "C". The execution of "os" displayed 
"B" as it stood with its partitions empty or "null". Then "E" was fetched 
and in its execution "E" caused the redefinition of "B" replacing the 
partitions with the contents of "C" thus restoring it back to its original 
condition. 

Finally we would like to know just what we have created and stored in the 
"text area" of memory. To do this we use the "It" or "list text" primitive; 
the second argument represents the character string we wish to use to 
precede each name just so we can tell them apart from each other thus: 



XT 

O 

<> 



%lt, /= A C D E F B 



In this example we used a space which precedes each name; note that "B" is 
last in the list - that is because it was redefined for the last time when 
we fetched "F" in the previous example. 



II 



|| The editor of this beginner's description of the SAM76 
Nota Bene | j language wishes to credit Robert M. Evans* from whose 
LI first technical writing effort this was derived. 



WEST COAST COMPUTER FA1RE 



468 



BOX 1579, PALO ALTO CA 94302 



ALGOL-M 

AN IMPLEMENTATION OF A 

HIGH-LEVEL BLOCK STRUCTURED LANGUAGE 

FOR A MICROPROCESSOR-BASED COMPUTER SYSTEM 

LT Mark S. Moranville 
Naval Postgraduate School 
Code 52MI 

Monterey, CA 93940 
PH 408-646-2449 



Abstract 



The design and implementation of the ALGOL-M 
programming language for use on a microprocessor- 
based system is described. The implementation is 
comprised of two subsystems, a compiler which 
generates code for a hypothetical zero-address 
machine and a run-time monitor which executes 
this code. The system was implemented in PL/M 
to run on an 8080 microcomputer in a diskette- 
based environment with at least 20k bytes of user 
storage. 

History of Algol 



The definition of the algorithmic language 
(ALGOL-60) was the result of the work of a 
committee of distinguished computer scientists 
and was originally published in 1960 [2] . The 
purpose of the developers of ALGOL-60 was the 
establishment of a universal computer language 
specifically designed to allow for the logical 
and efficient program representation of 
algorithms. Additional versions and extensions 
of ALGOL-60 such as ALGOL-68 [5] and ALGOL-W [6] 
have been developed and have found acceptance in 
the academic communities and in Europe. 

Microcomputer Software 



The rapid development of microcomputer hard- 
ware since 1975 has generally resulted in a con- 
siderable lag in the corresponding development of 
ompatible software, particularly that of high 
level languages. The Intel 8080 microprocessor 
is one of the few microprocessors which has 
endured long enough to permit software development 
to advance beyond the assembly language level. 
The majority of high level languages currently 
available for microcomputer based systems are 
extensions of the original Dartmouth BASIC and . 
although they allow for a reasonable level of 
programming sophistication, they are encumbei.. 
by the inherent limitations of the BASIC languc^e 
constructs. 

Objectives of ALGOL-M 



The major objective of this project was to 
Jevelop a dynamic, block-structured, recursive 
iiigh level language which would provide adequate 

WEST COAST COMPUTER FAIRE 469 



programming power and flexibility for 
applications programming using microcomputer 
based systems. ALGOL constructs were chosen 
because of their simplicity and power and 
because it was possible to write the grammar in 
LALR(l) form for use with available compiler- 
compiler generated parse tables [4] . ALGOL-M 
was developed to run on 8080 based microcomputer 
systems because of the availability of a high 
level system development language (PL/M) [1] 
which produces 8080 object code and which could 
be run on the Naval Postgraduate School ' s IBM 
360. The availability of an 8080 based disk 
operating system (CP/M) [3] simulator on the 
IBM 360 and the widespread use of CP/M were 
also strong factors in the choice of 8080 micro- 
processor and CP/M operating system. 

Features of the ALGOL-M Language 

Although ALGOL-M was modeled after ALGOL-60 
no attempt was made to make it a formal subset 
of ALGOL-60. This was done intentionally in 
order to provide a language which would be best 
suited to the needs of applications programmers 
using microcomputer systems. However, the basic 
structure of ALGOL-M is similar enough to ALGOL- 
60 to allow simple conversion of programs from 
one language to the other. This was considered 
particularly important in view of the fact that 
the standard publication language is ALGOL-60. 
Therefore, there exists a large source of 
applications programs and library procedures 
which can be simply converted to execute under 
ALGOL-M. 

Type Declarations . ALGOL-M supports three 
types of variables: integers, decimals, and 
strings. Integers may be any value between 
-32,767 and +32,767. Decimals may be declared 
ith up to 18 digits of precision and strings 
/-be declared as long as 255 characters. The 
fault precision for decimals is ten digits 
..:,, i the default length for strings is ten 
characters. Decimal and string variable lengths 
may be integer variables which can be assigned 
actual values at run-time. 

Another form of declaration in ALGOL-M is 
the array declaration. Arrays may have up to 
255 dimensions with each dimension ranging from 



BOX 1579, PALO ALTO CA 94302 



-32,767 to +32,767. The maximum 8080 micro- 
processor address space of 64k bytes limits 
practical array sizes to something smaller than 
the maximum. Dimension bounds may be integer 
variables with the actual values assigned at 
run-time. Arrays may be of type integer, 
decimal or string. 

Arithmetic Processing . Integer and binary 
coded decimal arithmetic are supported under 
ALGOL-M. Integers may be used in decimal 
expressions and will be converted to decimals 
by the compiler. The integer and decimal 
comparisions of less- than, greater-than, equal- 
to, not-equal-to, less-than-or-equal-to, and 
greater-than-or-equal-to are provided. 
Additionally, the logical operators AND, OR and 
NOT are available. 

Control Structures . ALGOL-M control 
structures consist of BEGIN, END, FOR, IF THEN, 
IF THEN ELSE, WHILE, CASE, and GOTO constructs. 
Function and procedure calls are also used as 
control structures. ALGOL-M is a block 
structured language with a block normally 
bracketed by a BEGIN and an END. Blocks may 
be nested within other blocks to nine levels. 
Variables which are declared within a block 
can only be referenced within that block or a 
block nested within that block. Once program 
control proceeds outside of a block in which 
a variable has been declared, the variable may 
not be referenced and, in fact, run-time 
storage space for that variable no longer 
exists. 

Functions, when called, return an integer,, 
decimal or string value depending on the type 
of the function. Procedures do not return a 
value when called. Both functions and 
procedures may have zero or more parameters 
and may be called recursively. 

Input/Output . The ALGOL-M WRITE statement 
causes output to the console on a new line. 
The desired output is specified in a write list 
which is enclosed in parentheses. String 
constants may be used in a write list and are 
characterized by being enclosed in quotation 
marks. Any combination of integer, decimal and 
string variables or expressions may also be used 
in a write list. A WRITEON statement is also 
available which is essentially the same as the 
WRITE statement except that output continues on 
the same line as the output from a previous 
WRITE or WRITEON statement. When a total of 
80 characters have been written to the console 
a new line is started automatically. 

Console input is accomplished by the READ 
statement followed by a read list of any com- 
bination of integer, decimal and string 
variables enclosed in parentheses. If embedded 
blanks are desired in the input for a string 
variable, the console input must be enclosed in 
quotation marks. A READ statement wilx result 



in a halt in program execution at run-^time until 
the imput values are typed at the console and a 
carriage return is sent. If the values 
typed at the console match the read list in 
number and type, program execution continues. 
If an error as to number or type of variables 
from the console occurs, program execution is 
again halted until values are re-entered on the 
console. 

Implementation 

The implementation of ALGOL-M consists of 
of two subsystems, a compiler and an interpreter 

Compiler Implementation . The compiler was 
designed to read source language statements 
from a diskette and to produce an intermediate 
language file with optional source listing at 
the console. A two pass approach was used to 
facilitate the implementation of GOTO statements 
forward subroutines, and control statements. 
Pass one builds the symbol table and saves all 
branch locations for resolution during pass two. 
Pass one also computes the size of the program 
reference table (which is used at run-time for 
maintaining the actual memory locations of 
variables, arrays, and subroutines) and writes 
this information out to the intermediate file. 
Pass two resolves all forward references and 
emits code to the intermediate file on disk. 

Interpreter Implementation . The ALGOL-M 
pseudo machine, as shown in Figure 1, is a soft- 
ware simulation of a stack-oriented CPU with an 
instruction set which is particularly well 
suited for execution of ALGOL-M programs. The 
ALGOL-M interpreter is loaded at address 100 hex 
(as are all executable programs under the CP/M 
operating system) and proceeds to read the 
ALGOL-M intermediate code from disk, 
constructing the pseudo machine begining at the 
first free memory location. The ALGOL-M inter- 
mediate code is read into a buffer in 128 byte 
segments. The first two bytes of the 
intermediate code represent an integer value 
equal to the number of bytes to be used for the 
program reference table (PRT) . 

The remaining intermediate code is 
manipulated in accordance with the algorithm 
shown in Figure 2 in order to construct the 
pseudo machine code area. 

The ALGOL-M interpreter uses the pseudo 
machine code area as input data. Each pseudo 
machine operator is equated to an integer value 
which is evaluated in order to provide the 
correct entry into a large case statement in the 
interpreter. Each entry in the case statement 
contains the necessary code to cause proper 
run-time execution of the specific ALGOL-M 
pseudo instruction. The case statement is 
executed continually until the ALGOL-M program 
has been completed, at which time control is 
passed back to the operating system. A run-time 



WEST COAST COMPUTER FAIRE 



470 



BOX 1579, PALO ALTO CA 94302 



RA 



RE 



STACK 



RC 



0004 



0002 



0000 



100H 



CODE AREA 



PROGRAM REFERENCE 
TABLE (p RT ) 



INTERPRETER 
PROGRAM 



ALGOL-M MACHINE 
MEMORY ORGANIZATION 



FIGURE 1 



WEST COAST COMPUTER FAIRE 



471 



BOX 1579, PALO ALTO CA 94302 



'»ET NEXT 
BYTE FROM 
INT FILE 




STORE IN 
CODE AREA 




STORE BYTE PLUS NEXT BYTE 
IN ALGOL-M PSEUDO MACHINE 
CODE AREA 



STORE BYTE IN CODE AREA, 
READ IN ASCII NUMBERS UNTIL 
BINARY ZERO, CONVERT TO TWO 
BYTE INTERNAL FORM, STORE IN 
CODE AREA 



STORE BYTE IN CODE AREA, READ 
IN ASCII CHARACTERS UNTIL BINARY 
ZERO, CONVERT TO INTERNAL FORM, 
STORE IN CODE ARE A 



T 



3k 



STORE BYTE IN CODE AREA, READ 

IN ASCII DIGITS AND DECIMAL 
POINT UNTIL BINARY ZERO, CONVERT 
TO INTERNAL FORM, STORE IN CODE 

AREA 



READ IN NEXT TWO BYTES, ADD 
VALUE OF THESE TO CODE BASE, 
STORE IN CODE AREA 



READ IN NEXT BYTE, STORE IN 
CODE AREA 



READ IN NEXT TWO BYTES, 
STORE IN CODE AREA 



FIGURE 



WEST COAST COMPUTER FAIRE 



472 



BOX 1579, PALO ALTO CA 94302 



stack is used to facilitate the execution of 
ALGOL-M pseudo instructions and for run-time 
storage allocation. Figure 3 illustrates how 
the stack is used in allocating decimal and 
string variables (integers are stored directly in 
the PRT) . Each time a new block is entered the 
block level pointer is set to the top of the 
stack. When a block is departed the top of 
stack pointer (RA) is decremented to the address 
of the previous block level. Therefore the 
storage allocated for variables within a given 
block is automatically de-allocated when the 
block is departed. 

Conclusions 



Peck, C.H.A. Koster, "Report on the 
Algorithmic Language ALGOL-68", Numer. 
14, 1969. 



Math. Vol 



6. Wirth, N., C. A. R. Hoare, "'A contribution to 
the Developments of ALGOL", CASM, Vol.9, No. 5, 
June 1966, pp. 413-432. 

7. Feldman, P. and Rugg, T. , "BASIC Timing 
Comparisons", Kilobaud, Issue #6, p. 66-69, June 
1977. 



This project has resulted in the con- 
struction of a high-level, block-structured, 
applications oriented compiler for micro 
computers with 20k bytes of memory or more. 
When compared to a fully dynamic scheme, the 
stack storage allocation and retrieval scheme 
presented here appears to enhance program 
execution speed, reduce memory requirements, and 
simplify compiler implementation. Included in 
appendix A are benchmark programs 4, 5, 6, and 
7 obtained from REF [7] . These benchmark 
programs illustrate the structure of ALGOL-M 
as compared to BASIC. 

Acknowledgements 

ALGOL-M is an outgrowth of a thesis 
completed at the Naval Postgraduate School by 
the author and LCDR John P. Flynn. LCDR Flynn's 
contribution to the completion of this project 
cannot be over emphasized. 

Professor Gary Kildall was our thesis 
advisor and I wish to express my appreciation 
for his assistance and direction throughout 
this project. 

Thanks also goes to the W.R. Church 
Computer Center Staff for their technical 
support . 

List of References 



1. Intel Corporation, 8008 and 8080 PL/M 
programming Manual, 1975, 3065 Bowers Ave, 
Santa Clara, Cfi. , 95051. 

2. Naur, P. (ed.), "Report on the Algorithmic 
Language ALGOL-60", Comm. ACM, Vol. 3, No. 5, 
May 1960, pp. 299-314. 

3. Strukynski, Kathryn B. Information on the 
CP/M Interface Simulator, internally 
distributed technical note. 

4. University of Toronto, Computer Systems 
Research Group Technical Report CSRG-2, " an 
Efficient LALR Parser Generator," by W.R. 
Lalonge, April 1971. 

5. van Wijngaarden, A., B. J. Mallioux, J. E. L.< 

WEST COAST COMPUTER FAIRE 473 



BOX 1579, PALO ALTO CA 94302 



BLOCK LEVEL 

BLOCK LEVEL 1 

BLOCK LEVEL 2 

END BLOCK LEVEL 2 
END BLOCK LEVEL 1 
?ND BLOCK LEVEL 



LEVEL ADDRESS 



BEGIN 

DECIMAL A,B,C; 
BEGIN 

STRING X,Y,Z; 
BEGIN 

DECIMAL C,D,E; 
END; 
END; 
END; 



STACK 



RA 



RB 



STORAGE FOR 
BLOCK LEVEL 2 



STORAGE FOR 
BLOCK LEVEL 1 



STORAGE FOR 
BLOCK LEVEL 



BLOCK LEVEI.S AND STACK STORAGE 



FIGURE 3 



WEST COAST COMPUTER FAIRE 



474 



BOX 1579, PALO ALTO CA 94302 



Benchmark Program 4 



300 PRINT "START" 

aoo K=0 

500 K=K+1 

510 A-K/2*3+4-5 

600 IF K<1000 THEN 500 

700 PRINT "END" 

800 END 



BEGIN 

INTEGER A,K; 

hRlTECSTART"); 

k:=0; 

while k<1000 do 

BEGIN 
k:=k+1; 
A:=k/2*3+«-5; 
END; 
WRITE("END"); 
END 



Benchmark Ppoqraw 5 



300 PRINT"START" 

aOO KsO 

500 KsK*l 

510 AsK/?*3*a-5 

520 GOSUB 820 

600 IF K<1000 THEN 500 

700 PRINT "END" 

800 END 



BEGIN 

INTEGER A,K; 
PROCEDURE DONOTHING; 

A:=o; 
WRITE("START"); 
K: = 0; 
WHILE K<1000 DO 

BEGIN 
K:=K*l; 
A:=K/2*3+a-5; 

DONOTHING; 
END; 
WRITE ("END"); 
END 



WEST COAST COMPUTER FAIRE 



475 



BOX 1579, PALO ALTO CA 94302 



Benchmark Program 6 



500 PRINT"START" 

aoo K=0 

a30 DIM M(5) 

500 k=k+1; 

510 A=K/2*3+4-5 

520 GOSUR «20 

530 FOP L-l TO 5 

540 NtXT L 

bOO IF K<1000 THF.N 500 

700 PRINVEND" 

800 END 



BEGIN 

INTEGER A,K,U 
INTEGER ARRAY M[1:5I '. 
PROCEDURE DONOTHING; 
BEGIN 

A:=o; 
end; 

WRTTECSTART"); 

k: = o; 

WHILE K<1000 DO 
BEGIN 

k:=k+i; 
A:=K/2*3+a-5; 

DONOTHING; 

FOR L:=l STEP 1 UNTIL 5 DO 
A: = 0; 
end; 

WRITECEND"); 
END 



Renchmartc Program 7 



300 PRINT "START" 

400 K=0 

a30 DIM M(5) 

500 K=K+1 

510 A=K/2*3+4-5 

520 G0SU8 820 

530 FUR L=l TO 5 

535 M(L)=A 

540 NEXT L 

600 IK K<1000 THEN 500 

700 PRINCEND" 

800 END 

820 RETURN 



BEGIN 

INTEGER A,K,L; 
INTEGER ARRAY Mil :51 ; 
PROCEDURE DONOTHING; 

BEGIN 
A:=0; 

END; 

writecsiaro; 

k:=0; 

WHILE K<1000 DO 

BEGIN 

k:=km; 

A:=K/2*3+4-5; 

DONOTHING; 

FOR L:=l STEP 1 UNTIL 5 DO 
MlLl :=A; 

end; 
writecend"); 

END 



WEST COAST COMPUTER FAIRE 



476 



BOX 1579, PALO ALTO CA 94302 



SPL/M - A CASSETTE-BASED COMPILER 

Thomas W. Crosley 
1675 New Brunswick Ave. 
Sunnyvale, CA 94087 



Abstract 

SPL/M is a subset of the PL/M 
language suitable for systems 
programming on small computers. The 
subset was necessary in order to fit 
the one- pass compiler into the 
author's system, which has 20X of RAM 
and two cassette decks. 

The paper describes how the 
subset was selected, and includes the 
BNF for SPL/M. The implementation is 
also described, with an emphasis on 
the code generation and optimization. 

Introduction 

My hobbiest software interests 
lie mostly in the systems programming 
area. Tnerefore shortly after I had 
my 6e00-based system up and running, 
and had written an assembler in 
machine language, I was already 
looking around for a suitable 
high-level language to use instead of 
assembly code. In particular, I 
wanted a procedure— oriented systems 
programming language that had: 

1. Arbitrary length identifiers 

2. Structured programming constructs 

3. Block structure (local variables) 

4. Arithmetic & logical operators 

5. Pointer variables 

6. String and character manipulation 

7. Direct access to user memory 
3. Recursion capabilities 

9. Easy linkage to assembly language 

The language also had to be 
compilable in one— pass, since the only 
secondary storage on my system 
consists of two cassette decks. 

Rather than try to design yet 
another high-level language, I chose 
one I already knew, namely PL/M. PL/M 
was specifically designed for 
implementation on 8-bit micro- 
processors, and also fully net all cf 
the conditions stated above except (6) 
and (3). PL/M has no built-in string 
functions but one can write user 
functions instead. Recursive 



procedure calls are possible; however 
automatic stacking of parameters is 
not provided. 

PL/M was originally designed as a 
crosr-compiler for the Intel 8008 
microprocessor and was later made 
available for the 8080 [1]. However I 
am using as my primary language 
reference the implementation by 
Intermetrics of PL/M6800 [2], also a 
cross-compiler. Intel has since come 
out with a resident version of PL/M-80 
for the 8080, but it is not compatible 
with their cross-compiler version. 
(It also requires 64K and dual 
floppys.) 

Description of SPL /M. 

I had decided to write the 
compiler in a subset of PL/M, and then 
hand- translate it to assembly 
language. Once the subset was up and 
running the compiler would be able to 
compile itself. I would then be able 
to incrementally add features to the 
compiler until the full language was 
implemented. 

The initial subset included only 
those features necessary to write the 
compiler. for example, the only 
arithmetic operators available were 
addition and subtraction. 

After I had the initial version 
of the compiler running, it was large 
enough that it was obvious a full PL/M 
version would not fit on my system. 
Therefore I decided to continue to 
expand the original compiler (by 
adding additional PL/M features in 
assembly code) until I had a version 
of the. language that met my needs. 

The resulting subset is called 
SPL/M (for Small PL/M). The features 
of SPL/M (Version 1.0) are listed in 
figure A-1 at the end of the paper, 
while the full grammar of the subset 
is shown in Figure A-2. 

a detailed list of the the PL/M 
features that are not in SPL/M is 
given in Figure A- 3, along with the 
reason for leaving them out. In 
general for each feature that was 



WEST COAST COMPUTER FAIRE 



477 



BOX 1579, PALO ALTO CA 94302 



removed there is an alternate 
construction available in SPL/M that 
will do the same thing. 

Some of the features that were 
removed are expected to be added back 
in for the next version of the 
compiler, as indicated in the comments 
column of Figure A-3. However I do 
not plan on putting GOTO's back in; 
think of this as promoting structured 
programming. I did however add a 
BREAK statement to SPL/M (borrowed 
from the language C) for abnormal loop 
termination. 

Another extension to PL/M are the 
MEM and MEMA arrays. They are 
predeclared to start at memory address 
0, and allow direct access to memory 
like the POKE and PEEK functions in 
some BASIC'S. MEM and MEMA are also 
used to simulate based variables which 
are not included in V1.0 of SPL/M. 

MEM is type byte, while MEMA is 
type address. The normal doubling of 
subscripts for address variables is 
not done for MEMA; for example, 

MEMA(38H) = 0FO50H; 

sets memory locations 38 and 39 to the 
hexadecimal value F050. 

The last extension added was to 
allow the construction CALL <number> 
in addition to CALL <identifier>. 
This makes it easier to call assembly 
language procedures. Typically the 
<number> is substituted at compile 
time via a DECLARE LITERALLY, so that 
the source code is still symbolic. 

Except for the above three 
extensions, SPL/M is syntatically a 
proper subset of PL/M. The major 
semantic difference is in the 
treatment of mixed mode (byte/address) 
statements. In PL/M, the result of an 
arithmetic operation is based only on 
its immediate operand(s). Therefore, 
assuming X is an address variable, the 
PL/M statement: 

X =-1; 

would set X equal to OEFH, rather than 
the expected OFFFFH. This is because 
the unary operation -1 is the same as 
0-1, which involves two byte 
operands . 

In SPL/M, I have chosen to make 
the result of an arithmetic operation 
equal to the highest precision 
encountered so far in the statement; 
therefore in the above example X would 
be set to OFFFFH in SPL/M since the 
destination is type address. 



Implementation 

Because all variables and 
procedures must be defined before they 
are referenced in SPL/M, the language 
can be compiled in a single pass over 
the source code. One-pass compilers 
have a few special problems, namely in 
code generation (discussed later). 
However the overall organization of 
the compiler (scanner, parser, code 
generator, and code optimizer) is the 
same as most other compilers. There 
is just more happening in parallel. 

Scanner . The lexical scanner 
reads the source characters out of an 
internal buffer, and from these 
constructs the source program "tokens" 
(such as identifiers, reserved words, 
integers, and one or two character 
symbols). Each token is represented 
internally by a token index value. 

The scanner is implemented as a 
subroutine which is called by the 
parser. When called, the scanner 
recognizes the next source program 
symbol and parses the token index up 
to the parser. 

The scanner knows very little 
about SPL/K, leaving that to the 
parser. However it does resolve some 
ambiguities for the parser, such as 
the difference between a variable at 
the beginning of an assignment 
statement and a label in front of a 
procedure declaration. The scanner 
also removes comments (delimited by a 
/* */ pair) which may appear anywhere 
a blank is allowed. 

Symbol Table Routines. Since 
SPL/M is a block structured language , 
eacn block can have its own symbol 
table. Thus the overall symbol table 
is organized as a stack. 

The head of each symbol table 
block consists of a fixed portion 55 
bytes long. The first two bytes are a 
backwards link to the previous block. 
The next byte is the nesting level for 
the current block. The last 52 bytes 
are used as pointers into a dynamic 
area for the block. The pointers are 
indexed by the first letter of the 
symbol. Each entry in the dynamic 
area contains the following fields: 



Two byte link to the next entry 

in the chain. 

dumber of characters in the 

symbol . 

2nd through nth character of the 

symbol. 



WEST COAST COMPUTER FAIRE 



478 



BOX 1579, PALO ALTO CA 94302 



4. Token index. 
Address ( only 
procedure ) . 



if a variable or 



The token index indicates whether 
the symbol is a reserved word, byte or 
address variable, or a procedure. 

Each tiire the scanner scans cut 
an identifier, it first searches the 
first symbol table block to see if it 
is a reserved word. If not, then the 
most current block is searched. If 
the symbol is still not found, the 
backwards link field is used to search 
the next most current block. This is 
repeated as necessary until all the 
blocks have been searched. 

For DECLARE statements, the above 
procedure is performed except that the 
search is stepped after only searching 
the reserved word block and the most 
current block. 

Every time a DO or procedure 
block is entered, the current nesting 
level is incremented. However a new 
symbol table block is not allocated 
until a variable (if any) is declared 
within the block. At the end of the 
DO group or procedure, the current 
nesting level is compared with the 
nesting level for the current symbol 
table to see if it should be 
deallocated. 

Parsing . The parsing technique 
used Ty the compiler is called 
recursive descent. It was chosen 
because the resulting- parser closely 
follows the ENF of the grammar, and is 
therefore easier to debug and modify 
than bottom-up parsers. 

For instance, the SPL/M procedure 
GROUP (Figure A-4; corresponds to the 
production ; <group> in the grammar. 
Since DO groups can be nested, it 
first stacks two of its variables 
which allows the procedure to be 
called recursively. It then calls the 
procedure GRP$KEAD which will parse 
out either a plain DO group or else a 
DO-WHILE. GRPSHEAD also calls a 
procedure to increment the nesting 
level. 

On return from GRP$KEAD, if there 
have been no syntax errors so far 
(E=0) then zero or more statements are 
parsed out (procedure STMT) until an 
END is encountered. At the end of 
GROUP, a call is made to EXIT$BLX to 
decrement the nesting level and delete 
the symbol table block if one was 
allocated. 



Error Handling. Errors are 
caught by Loth the parser and the 
scanner. When an error is detected, 
the source line is printed followed Ly 
a line containing one or more single 
letter flags indicating the error(s). 
For example, 'S' is used to indicate a 
syntax error, 'U' means an undefined 
identifier, and 'D' stands for a 
duplicate definition. 

The flags are positioned under 
the token where the error was 
discovered. For example in the 
printout below, 



0210 TBL(I) = CTR1 



h- CTR2 
S U 



TBL and CTR2 are undefined, and there 
is a syntax error because of the 
second '+'. When a syntax error is 
discovered, the remainder of the 
statement is ignored (up to the next 
';'), except that the scanner 
continues to flag undefined symbols. 
Also, when undefined symbols are 
encountered code is still generated 
(assuming an address of 0) to allow 
patching. 

Generation of error messages was 
another factor in choosing recursive 
descent for parsing. Because top-down 
parsing is goal oriented, at any point 
the parser knows exactly what symbol 
(or symbols) should come next. This 
makes it easier to locate the 'S' flag 
under the offending token. 

Code generation . Since the 6800 
has a limited number of registers, 
code generation is not complicated by 
having to perform elaborate register 
allocation as it would be with the 
8080 microprocessor. 

Accumulator A is used for all 
byte expressions, with accumulator B 
used only for address operations. (In 
the latter case BA is treated as a 16 
bit accumulator.) If there is a value 
in either accumulator that must be 
saved temporarily, it is pushed onto 
the run- time stack. Later the 
temporary is accessed via the index 
register. For example, 

PSHA (save temp value) 

(code which reloads ACCA) 

TSX 

ANDA 0,X (X points to temp) 

INS 



WEST COAST COMPUTER FA1RE 



479 



BOX 1579, PALO ALTO CA 94302 



• The index register is primarily 
used however to address arrays. 
Subscripted addresses are built up in 
BA and then transfered to the X 
register via a subroutine. (The lack 
of a instruction to do this is 
probably the single greatest weakness 
in the 6800 instruction set.) The 
only other subroutine calls generated 
by the compiler are for multiplication 
and division. The compiler does net 
have to generate the the above three 
subroutines since they are all 
available in my system ROM. 

Most compilers translate the 
entire source program into some 
internal form, such as a tree or a 
list of quadruples. Additional passes 
translate the internal form into the 
object code in addition to performing 
optimizations. 

Since SPL/M is a one-pass 
compiler, this technique is hot used. 
Instead code is generated as the 
parsing takes place. Tor example 
(again referring to figure A-4), at 
address 1577 a jump (7EH) is generated 
back to the beginning of the the DO 
WHILE following the 'END'. (The 
address to jump to had been previously 
saved in GH$ADDR by procedure 
GRP$HEAD). 

Code generation in a one-pass 
compiler is complicated by not knowing 
what is coming next in the source. In 
an IF or DO WHILE statement, a jump is 
"required to go to the end of the 
statement if the <expr> evaluates 
false, but the end of the statement 
isn't known yet. So the compiler 
generates a jump to instead (see 
address 1567), and later a "fixup" is 
performed to patch up the jump to the 
proper address. Code generated for 
fixups is listed in parentheses on the 
printout (e.g. see code following 
address 156D). 

Initially I tried to handle code 
generation for expressions in the same 
manner; i.e. in the same routines that 
were parsing out the expression. 
However because of the hierarchy of 
operators I found it difficult to 
generate the proper code at the right 
time. I therefore separated the code 
/-generation for expressions into 
individual routines for each 
operator. Ccmmurication between the 
parser and the code generator is via 
two stacks: cne for operands and the 
I other for operators. 

I Entries on the operator stack are 
I all one byte long, and consist of an 
I integer representing the particular 



operator. The operand stack has 
variable length entries fror; one to 
three bytes" in length. Each entry 
describes the operand type and where 
it is currently located (at run- time ) : 



Code Length 



Meaning 




1 
2 

3 
4 
5 
6 
7 
8 

Q 

A 
B 
C 

D 



Byte constant 
Address constant 
Byte value in A 
Address value in BA 
Byte value on TOS 
Address value on TOS 
Byte variable 
Address variable 
Byte variable, addr in BA 
Addr variable, addr in BA 
Byte variable, addr on TOS 
Addr variable, addr on TOS 
Byte variable, addr in X 
Addr variable, addr in X 



A - Accumulator A 

BA - Accumulators EA 

TOS - Top of stack 

X - Index register 

As an example, the statement: 

X = 500 + Y * 31K ; 

is represented internally as: 

Operand Stack Operator Stack 



(byte const) 

31 

7 (addr var) 

HIGH(.Y) 

LOW(.Y) 

(addr const) 

01 

FA 5 

7 (addr var) 2 

HIGH(.X) B 

LOW(.X) 



^code for *) 
^ode for +) 
( code for assign =) 
k beg of stmt) 



WEST COAST COMPUTER FAIRE 



480 



where HIGH(.Y) and LOW(.Y) refer to 
the high and low bytes of the address 
of variable Y. 

As each operand in an expression 
is parsed out, it is pushed onto the 
operand stack. However as each 
operator is parsed out, a pair of 
vectors (called F and G functions in 
Gries [3]) are used to see if the code 
for the operator already at the top of 
the operator stack should be generated 
first. 

This is done by comparing the F 
value corresponding to the operator at 

BOX 1579, PALO ALTO CA 94302 



the top of the stack with the G value 
for the new operator just parsed. If 
the F value is greater, then a code 
generation routine is called for the 
operator at the top of the stack. It 
will remove one or two operands from 
the operand stack, delete the operator 
from the top of the operator stack, 
and push a descriptor of the result 
onto the operand stack. 

If instead the F value is less 
then the G value, the new operator is 
just pushed onto the operator stack. 

The values for the F and G 
vectors reflect the operator 
precedence for the language. I wrote 
a BASIC program to compute the 
vectors, based on an algorithm on page 
116 of Gries. The input to the 
program consisted of strings 
representing the BNF for SPL/M 
expressions. 

Code Optimization . Because of 
the limitations on £he size of the 
compiler, optimizations are performed 
only on expressions within a single 
statement. In particular, no attempt 
is made to remember the value of any 
of the registers across statement 
boundaries . 

iMost of the optimizing is done be 
examining the operand and operator 
stacks for particular patterns after 
parsing out an entire expression. For 
example the statement 

1 = 0; 

is placed on the two stacks as: 

Operand Operator 







6 

HIGH(.var) 

LOW(.var) 



B (assign=) 




When the compiler recognizes this 
pattern, it generates a CLR memory 
instruction rather than a CLRA, STAA 
memory sequence. 

The same technique is used to 
optimize statements such as 

1 = 1 + 1 ; 

into an IKC memory instruction. 
However if the statement was written 

1 = 1+1: 



the pattern would not be recognized 
and no optimization would be 
performed. However the second form is 
much less likely to be written. 

Further optimizations done in 
this way include using the index 
register for double precision loads 
and stores where appropriate. 

Another type of optimization is 
performed for IF and DO WHILE 
statements. In SPL/K (as in PL/M), an 
expression is true if the rightmost 
bit of the result is a one. So the 
general code for an IF <expr> THEN 
statement is: 

(code for <expr>) 

LSRA 

BCS 3+* 

JMP (to end of IF) 

(code for true part) 

However if the expression is a 
<logical primary> of the form: 

<arith expr> <rel> <arith expr> 

the code generated would be rather 
inefficient: 

(code preceding REL test) 
Bxx 3+* (conditional branch) 
CLRA (false) 
BRA 2+* 

LDAA =0FFH (true) 
* (end of code for <expr>) 
LSRA 
BCS 3+* 

JiMP (to end of IF) 
(code for true part) 

since the test ends up being performed 
twice. Therefore the sequence is 
optimized to just 

(code preceding REL test) 
Bxx 3+* 

JMP (to end of IF) 
(code for true part) 

Refer to Figure A-4 for examples 
of the various optimizations discussed 
above . 

Casse tte I_/0 Routines . The 
compiler is designed to operate with 
two cassette decks — one in "play" 
mode, reading in source, and the other 
in "record 11 , for writing out the 
object code. 

To keep the RAM requirements to a 
minimum, the source program is read in 
as a series of blocked records into a 
2X buffer, each block consisting of 



WEST COAST COMPUTER FAIRE 



481 



BOX 1579, PALO ALTO CA 94302 



(typically) 100 source lines. The 
scanner, on detecting the end of a 
buffer, calls the cassette read 
routine to read in the next block. 
This is continued until the last line 
of the program (containing "EOF") is 
read. 

The object program is also 
divided into blocks; however a double 
buffer system is used, each buffer 
being 512 bytes long. This insures 
that the fixup routine used to patch 
up forward references always has at 
least 512 bytes to look back into. 
This is considered adequate since 
fixups are always done within a single 
procedure. 

Each object block consists of a 
header, which includes the block name, 
length, type, and start address. An 
object block is written out whenever 
the current buffer overflows, or if a 
new origin is found. The compiler 
generates only absolute code. 

System Considerations 

The compiler is presently 
designed to run only on the Sphere 
6800 system. Model 330. In 
particular, it assumes the existence 
of: 

CRT/1 

KBD/1 or 2 

Cass I and II 

Printer 

MEW/1 (20K RAW total) 

PDS V3N ROM set 

The printer is the only device 
that will vary from one system to 
another. Therefore two user routines 
must be provided: one called at the 
beginning to initialize the printer 
ACIA, and a second to print a single 
character contained in accumulator A. 

The compiler object is just over 
8K in length. It should be possible 
to run the compiler in a 16K system, 
and still have around 2.5K available 
for the symbol table. That would be 
adequate for approximately 200 
six-character symbols. The total 
number of symbols in a program could 
be much higher than that, since symbol 
table blocks are dynamic. 

Compile Time Options . The 
compiler has several options relating 
to the input/output devices. 

Source input normally comes from 
Cassette I, but as an option it can be 
instead input from the keyboard. This 

WEST COAST COMPUTER FAIRE 



is useful for debugging and 
demonstrations. Since SPL/M is a 
one-pass compiler, the code will be 
output following every statement. 

By default, a full listing is 
output to the CRT only, with just an 
error printout going to the printer. 
However as an option the full listing 
(including generated object code) can 
be printed as shown in Figure A-4. 

An additional option allows the 
symbol table to be printed out. Each 
symbol table block is dumped out (just 
before it is deallocated; in the same 
order it is stored in memory; 
therefore symbols are alphabetized on 
the first letter only. Along with 
each symbol is listed the type (BYTE, 
ADDR, PROC, or LIT), and its value. 

Summary and Conclusions 

My original goal was to write a 
compiler for PL/M that would fit in my 
system. I did not fully succeed in 
doing that, but I have implemented a 
compiler for a useful subset of the 
language. Even so that took over one 
and one-half years of part time 
effort. 

I feel it was worth it, since 
writing systems software in SPL/M is 
much easier than using assembly 
language. However I find that the 
compiler, on the average, generates 
about twice as much code as I do when 
coding in assembly level. 

The text formatter I am using to 
print this paper was the first major 
SPL/M program I wrote; it consists of 
approximately 800 lines of SPL/M and 
is just over 5K bytes long. While 
debugging the formatter I was able to 
trace only one bug to an error in the 
compiler. 

My next major goal is to complete 
Version 2.0 of SPL/M, which I hope 
will be much closer to being a full 
PL/M. 

References 

1 . 8008 and 8080 PL/M Programming 
Manual, Revision A~ Intel 
Corporation, Santa Clara, CA, 

1 975- 

2. PL/M6800 Language Specification . 

Tnterme tries, Inc. , Cambridge, MA, 

1975. 

3. Gries, D. Compiler Construction 
for Digital Computers . John Wiley 
T~3ons, Inc., New Stork, NY, 1971. 



482 BOX 1 579, PALO ALTO CA 94302 



Statement Types : 

DECLARE 

Assignment (e.g. COUNT = 1;) 

IF-THEN (with optional ELSE) 

DO-WHILE (loop control) 

Grouping (DO; statement list END;) 

PROCEDURE definition 

Declarations : 

Define variable types, either BYTE (8 bits), or 

ADDRESS (16 bits) 
Define arrays (one dimension only), either 

variable or constant (DATA) 
Define compile time numeric substitutions (LITERALLY) 

Operators : 



/ MOD (modulo) 



Arithmetic: 

+ - * 
Logical : 

NOT AND OR XOR 
Relational : 

<>=<=>=<> (not equal) 



Procedures : 

Defined within a PROCEDURE-END pair and called via a 
CALL statement 

Built-in functions : 

Type conversion (LOW, HIGH, DOUBLE) 
Direct memory access (MEM, MEMA) 



Miscellaneous : 



Identifiers may be any length 

Decimal, hexadecimal, and string constants 

Integer arithmetic only 



Figure A-l. SPL/M Language Features (VI .0) 



WEST COAST COMPUTER FAIRE 



483 



BOX 1579, PALO ALTO CA 94302 



J 



^ 



<program> ::= <stmt list> EOF 

<stmt list> ::= <stmt> ! <stmt list> <stmt> ! NIL 

<stmt> ::= <basic stmt> ! <if stmt> 

<basic stmt> ::= <assignment> ; 

; <group> ; 

! <proc def> ; 

| <call stmt> ; 

! RETURN ; 

! BREAK ; 

! <decl stmt> ; 

<if stmt> ::= <if clause> <stmt> 

I <if clause> <basic stmt> ELSE <stmt> 

<if clause> ::= IF <expr> THEN 

<group> ::= <group head> <stmt list> END 

<group head> : := DO ; 

! DO WHILE <expr> ; 

<proc def> ::= <proc head> <stmt list> END 

<proc head> ::= <identifier>: PROCEDURE ; 
J <identifier>: PROC ; 
1 <origin> <proc head> 

<call stmt> ::= CALL <identifier> ! CALL <nuurt)er> 

<decl stmt> ::= DECLARE <decl element> 
! DCL <decl element> 
j <decl stmt> , <decl element> 
1 <origin> <decl stmt> 

<decl elements ::= <identifier> <type> 

I <identifier> ( <numter> ) <type> 
! <identifier> <data list> 
! <identifier> LITERALLY '<number> 
< <identifier> LIT '<number>' 

<type> ::= BYTE ! ADDRESS ! ADDR 

<data list> ::= <data head> <constant> ) 

<data head> ::= DATA ( 

! <data head> <constant> , 

<origin> : := <number>: 

<assigninent> : := <variable> = <expr> 



Figure A-2. SPL/M Grammar 



WEST COAST COMPUTER FAIRE 484 BOX 1579, PALO ALTO CA 943(tt 



<expr> ::= <logical factor> 

! <expr> OR <logical factor> 
! <expr> XOR <logical factor> 

<logical factor> ::= <logical secondary> 

! <logical factor> AND <logical secondary> 

<logical secondary> ::= <logical primary > 
! NOT <logical primary> 

<logical primary> ::= <arith expr> 

J <arith expr> <relation> <arith expr> 

<relation> ::= = J < J > ! <> J <= ! >= 

<arith expr> ::= <term> 

J <arith expr> + <term> 
! <arith expr> - <term> 

<term> ::= <secondary> 

! <term> * <secondary> 
! <term> / <secondary> 
S <term> MOD <secondary> 

<secondary> : := <primary> 

! - <primary> 

<primary> ::= <constant> 

! <variable> 
! . <identif ier> 
! ( <expr> ) 

<variable> ::= <identifier> 

! <identifier> ( <expr> ) 

<constant> ::= <number> ! '<string>' 

<identifier> ::= <letter> 

J <identifier> <dec digit> 
! <identifier> <letter> 
! <identifier> $ 

<letter> ::= A ! B ! C ... J Z 

<number> ::= <dec number> ! <hex number> fi 

<dec number> ::= <dec digit> 

! <dec num> <dec digit> 
! <dec num> $ 

<hex number> ::= <dec digit> 

! <hex num> <hex digit > 
! <hex num> $ 

<dec digit> ::= ! 1 ! 2 ... J 9 

<hex digit> : := <dec digit> jAjEjCjDjEii 1 

<string> ::= <str element> ! <string> <str element> 

<str element> ::= <ASCII char> ! " 



Figure A-2 Continued . SPL/M Grammar 
WEST COAST COMPUTER FAIRE 485 BOX 1 579, PALO ALTO CA 94302^ 



Feature Removed I Rationale 



GOTO and labels 

Imbedded & mult- 
iple assignments 

DO CASE 



Based variables 

Iterative DO 

Proc parameters 

User defined 
functions 

Shift functions 

LENGTH & LAST 
functions 

Factored DCL's 

INITIAL attribute 
DCL LIT <string> 



Binary & octal 
constants 

Interrupt access 
and 6800 flags 



not needed 

use multiple 
statements 

use nested 
IF's 

use MEM,MEMA 

use DO WHILE 

use globals 

use globals 

use * or / 

use DCL LIT 
<number> 

use multiple 
DCL'S 

use DATA 



Comment 



BREAK added 



use DCL LIT 
<number> 

use hexa- 
decimal 

write in 
assembly 



planned for V2.0 
planned for V2»0 
planned for V2.0 
planned for V2.0 

planned for V2.0 
planned for V2.0 

planned for V2.0 



| PROC, ADDR, DCL 
& LIT built-in 



Figure A-3. FL/M Features Not in SPL/M VI. 



WEST COAST COMPUTER FAIRE 



486 



BOX 1579, PALO ALTO CA 94302 



152C: 
152E: 
152P: 
1530: 
1531: 
1533: 
1535: 
1538: 
153A: 
153C: 
153E: 

1540: 
1542: 
1543: 
1544: 
1545: 
1547: 
1549: 
154C: 
154E: 
1550: 
1552: 



96 7A 
5P 
48 
59 

8B 00 
C9 04 
BD FE 29 
96 66 
D6 65 
E? 00 
A7 01 

96 7A 

5F 

AS 

59 

8B 40 

C9 04 

BD FE 29 

96 68 

D6 67 

E7 00 

A7 01 



0012 
0013 
0014 
0015 
0016 
0017 
0018 
0019 
0020 



152CH: 

GROUP: PROCEDURE; 

DCL GPI BYTE; 

400H: DCL GP$STK (20H) ADDR. 
GH$STK (20H)'ADDR; 

GP$STK(GPI) = GP$ADDR; 



0021 GH$STK(GPI) = GH$ADDR; 



1554: 7C 00 7A 



1557: BD 16 PA 

155A: 96 5B 
155C: 27 03 
155E: 7E 00 00 

1561: 96 5A 
1563: 80 86 
1565: 26 03 

1567: 7E 00 00 
156A: ED 18 1C 

156D: 7E 15 61 
(1567: 7E 15 70) 

1570: BE 67 
1572: 26 03 
1574: 7E 00 00 



0022 GPI = GPI + 1 ; 

0023 /* PARSE OUT DO OR DO-WHILE */ 

0024 CALL GRP$HEAD; 

0025 IP E = THEN DO; 



0026 DO WHILE N <> END$TOKEN; 

0027 CALL STMT; 

0028 END; 

0029 IP GH$ADDR <> THEN DO; 



Figure A-4. Example Conpiler Printout 



WEST COAST COMPUTER FAIRE 



487 



BOX 1579, PALO ALTO CA 94302 



1577: 86 7E 

1579: 97 70 

157B: 96 68 

157D: £6 67 

157F: 17 

1580: 97 71 

1582: 96 68 

1584: D6 67 

1586: 97 72 

1588: £D 0C 43 



158B: BE 65 
158D: DF 69 

158F: £D 1A BB 



(1574: 7E 15 92) 

(155E: 7E 15 92) 
1592: 7A 00 7A 

1595: 96 7A 
1597: 5P 
1598: 48 
1599: 59 
159A: 8B 00 
159C: C9 04 
159E: BD FE 29 
15A1: E6 00 
15A3: A6 01 
15A5: 97 66 
15A7: D7 65 

15A9: 96 7A 

15AB: 5E 

15AC: 48 

15AD: 59 

15AE: 8B 40 

15B0: C9 04 

15B2: ED FE 29 

15B5: E6 00 

15B7: A6 01 

15B9: 97 68 

15BB: D7 67 

15BD: BD 15 AD 

15C0: 39 



0030 /* GEN JUMP TO BEG OF DO */ 

0031 CA(O) = 7EH; 

0032 CA( 1 ) = HIGH(GH$ADDR) ; 



0033 CA(2) = L0W(GH$ADDR); 



0034 CALL GEN3; 

0035 /* EIXUP JUMP TO END */ 

0036 PAT$ADDR = GP$ADDR; 



0037 CALL FIXUP; 

0038 END; 

0039 END; 

0040 GPI = GPI - 1 ; 

0041 GP$ADDR = GP$STK(GPI); 



0042 GH$ADDR = GH$STK(GPI); 



0043 CALL EXIT$BLK; 

0044 END; /* GROUP */ 



Figure A-4 Continued . Example Compiler Output 



WEST COAST COMPUTER FAIRE 488 BOX 1 579, PALO ALTO CA 94302 



AN EXPERIMENTAL PASCAL-LIKE LANGUAGE FOR MICROPROCESSORS 

H. Marc Lewis, Information Systems Manager 
Regional Information Systems, Eugene, OR 97401 



Introduction 



This paper describes an experimental PASCAL - 
like high level language oriented to microproc- 
essor implementation and use. The design cri- 
teria include modest memory requirements, se"!f- 
compilation, simplicity, reasonable access to 
hardware features, and ease of extensibility. 
Program structure, data declarations, and cont- 
rol structures are described and examples given. 
Novel features of the language are discussed. An 
appendix gives a formal description of the lan- 
guage via syntax graphs. 

Background 



As a computer scientist I have always been 
disappointed with the plethora of articles about 
the BASIC programming language which have app- 
eared in the various computer hobbyist publi- 
cations. That is not to say I don't like BASIC 
itself, in fact I think it's an excellent lan- 
guage for introducing someone to the programm- 
ing game. But it has its limitations, as do 
all languages, and is not well suited to the de- 
sign and implementation of systems software. I 
am not a hardware type, and I don't particularly 
get off on tracking down electronic problems 
with my microcomputer. I am very interested 
however in systems software design, i.e. device 
drivers, operating systems, monitors, compilers, 
and even some end-user applications like real- 
time and process control stuff. 

You may think I should be coding in Assem- 
bler, but I disagree. The debate on the merits 
and disadvantages of writing systems software 
in Assembler versus some higher level language 
has been going on for many many years among com- 
puter scientists, and the scales, though still 
not stabilized, have tipped towards high level 
languages. Burroughs Corp., always in the fore- 
front of computer architecture in my mind, has 
built several machines designed to be programmed 
at the lowest level by a high level language. 
And even companies producing more conventional 
hardware architectures are now specifying that 
all systems software will be written in a high 
level language. Texas Instruments, for example, 
has chosen PASCAL for all development on their 
computers, from the micros to their super-com- 
puter, the ASC. 

But enough rhetoric, the purpose of this 
talk is to explain why I felt justified is de- 
signing yet another language, and in particular 
why it looks the way it does. There are certain- 



ly plenty of languages and variants of lan- 
guages now, so why another? 

Well, to start with, there currently does 
not seem to be any suitable Systems Implemen- 
tation Language (I'll abbreviate with SIL from 
now on) available for microprocessors. Sure I 
know that there is at least one good PASCAL 
implementation available for the Z-80, and ; 
there are 8080 and 6800 versions also in the 
works or on the street. But PASCAL is not 
really a candidate for a SIL, Dr. Wirth even 
admits that the language wasn't designed for 
that (however, his newest language, MODULA, is) 
even though it contains an excellent assort- 
ment of data and control structures which 
allow straightforward and well -structured 
program design. And I hope we all agree that 
BASIC, FORTRAN, PILOT, etc. are not even worth 
considering as SIL's. 

So, where does that leave us? How about in 
a place where some new language, incorporating 
some of the better features of more general and 
ambitious high level languages, and which was 
very modest in its requirements for memory, 
could fit? The language I've designed, which 
incorporates features of PASCAL, MODULA, and C, 
is just such a language. Incidently, I haven't 
yet named the language so please forgive the 
awkward references to simply "The/This Lan- 
guage". 

Basic Design Cr.iteria 

The following criteria were considered in 
the design of this SIL: 

1. Small memory requirements (less than 16K 
if possible). 

2. Self -compiling: The language would first 
be developed for one particular machine and 
then the compiler would be written in its own 
language. Thus by simply modifying the code- 
generating portions of the compiler it could 
be adapted for any target machine. 

3. Simplicity: The language, and its compiler 
implementation, should be as simple and strai- 
ghtforward as possible to allow novices in 
compiler construction to modify it to their 
particular requirements. 

4. Versatility: The language should allow 
access to as much of the hardware as possible, 
including the stack, 1/0 registers, the accum- 
ulators), etc. 

5. Extensibility: This is an experimental 
language, therefore it should be easy for some- 
one to experiment with it, for example includ- 



WEST COAST COMPUTER FAIRE 



489 BOX 1 579, PALO ALTO CA 94302 



ing some desirable feature or extending the 
language to make it more suitable for a par- 
ticular application. 

The Language Itself 



A program consists of zero or more data 
definitions, followed by zero or more PROCEDURE 
definitions, followed by one or more executable 
statements, in the form of a BLOCK. The lan- 
guage is "block-structured" in the manner of 
ALGOL, PL/1, and PASCAL. 

Data Declarations . The simple data types 
supported are INTEGERS, CHARs, and STRINGS. A 
DECIMAL type may be added later if it seems 
necessary. Constants of either type may be 
defined. 

Singly dimensioned arrays may be defined 
for INTEGERS and CHARs by appending the integer 
array size enclosed in brackets to the defini- 
tion statement. An array of size "n" will have 
"n+1" elements, the first element being the zero- 
th element, which in the case of character arrays 
contains the current length of the string. 
Arrays of strings are implemented as a vector 
of pointers to the individual character arrays. 
The maximum length of a character array is 255 
characters due to the 8-bit character size of 
most machines. 

Strings are actually pre-defined character 
arrays. The size of the strings for any given 
program is specified once, in the data declara- 
tion section, by appending the integer string 
size (between and 256) enclosed in brackets 
to the STRING keyword. Examples of data dec- 
larations: 

INTEGER A, &,-€; 

CHAR LINE[80], NEXTCHAR, EOFBYTE; 

STRING[64] PAGE[32], HEADER; 

There is no static initialization of var- 
iables as in PL/1. Initialization must be per- 
formed explicitly (and dynamically) via an 
assignment statement a la PASCAL and MODULA. 
This requirement arises out of the necessity 
for recursion in PROCEDURE calls. 

To simplify the compiling process CONSTants, 
which may not be dimensioned, must be declared 
first, then any INTEGERS, CHARacters, or STRINGS. 
The syntax charts in appendix A-l depict this 
graphically. 

Comments . Comments may appear anywhere in 
a program and are enclosed by a familiar "slash- 
star" and "star-slash" of PL/1 and PL/M. PASCAL 
type comments, delimited by (* and *) are also 
valid. Comments within comments are not recog- 
nized. 

Control Sturctures . For control structures, 
the language contains the standard sequencing 
structure of sequential execution of statements 
unless modified by selection or repetition 



structures. Statements are separated by semi- 
colons as in PASCAL, rather than using semi- 
colons to terminate all statements as in PL/M. 
In this language assignment is denoted by 
the familiar two-character symbol ":=" of 
PASCAL, C, and MODULA. This symbol (which I 
read as "gets") has the advantage of having a 
single meaning, unlike the "=" operator of 
PL/M which indicates either assignment or a 
test for equality, depending upon the context. 
Examples of assignments are: 

A:=B 

A:=SIZE MOD 2 

CELL[I]:=SIZE*8 

A novel feature of this language is that 
expressions are restricted to the form of a 
single (possibly signed) constant or variable, 
or a pair of constants and/or variables separ- 
ated by an operator. Operators are arithmetic 
(+,-,/,*, MOD), boolean (AND, OR, XOR) , rela- 
tional (>,<,>=. <>) , or shifting («,»). 

An unary "address of" operator (the argyle) 
and an increment/ decrement operator (++,--) 
are also provided. For example, A:=@B; puts 
the address of variable "B" into variable "A", 
++A; increments variable "A" by one, and 
A:=A«3; shifts variable "A" left 3 bits. 

The justification for limiting the com- 
plexity of expressions comes, again, from the 
design goal of keeping the compiler small, and 
from the desire to see if such a restriction 
places undue constraints on the programmer. 
In a study of a large number of student-written 
FORTRAN programs by Knuth, it was found that 9 
out of 10 assignment statements had only one 
or two terms on the right of the equals sign. 

The IF statement and the CASE statement 
comprf se the seTecti on cbnt"r6T~structures. 
The IF statement has the forms: 

IF condition THEN statements END 
IF condition THEN statements 

ELSE statements END 
IF condition THEN statements 

ELSIF condition THEN... END 

and the CASE statement has the form: 

CASE expression OF 

caselabel: BEGIN statements END; 



easel abel: BEGIN statements END 



END 



These are fairly common forms for these con- 
structs and are borrowed directly from MODULA. 

Repetition is handled by the LOOP construct 
of MODULA. This single type of statement is 
sufficient to express all repetitions. Thus, 
in striving to keep the language and its com- 
piler small, no WHILE, REPEAT, FOR, or DO 
statements are included. 



WEST COAST COMPUTER FAIRE 



490 



BOX 1579, PALO ALTO CA 94302 



■ The general form is: 

I LOOP statements WHEN condition DO 

I statements EXIT 

I statements WHEN condition DO 

■ statements EXIT 



statements WHEN condition DO 
statements EXIT 
statements 



END 



However, more simple forms of the LOOP statement 
are also valid: 

Example of an infinite LOOP 

LOOP GETCH(CELL[I]; ++I END 

Example of a 10- Iteration LOOP 

I:=0; (* initialize loop counter *) 
LOOP GETCH (A); 

++I; CELL[I]:=A 

WHEN 1=10 EXIT 
END 

Example of a "WHILE" LOOP 

LOOP WHEN CH=';' EXIT 

GETCH(CH) 
END 

Example of a "REPEAT" LOOP 

LOOP GETCH (CH) 



WHEN CH=' 



EXIT 



END 



Notice that there is no LABEL definition 
as in PASCAL. This is because there is current- 
ly no GOTO statement, thus labels (excluding 
CASE labels, which are constants) are unnecess- 
ary. As with MODULA, the omission of the GOTO 
statement is an experiment only, and if it fails 
the GOTO (and labels) will be included in the 
language. 

Procedures 



PROCEDURE calls are subroutine calls in the 
PL/M sense. No function calls are defined (ex- 
cept predefined or external PROCEDURES like 
GETCH, ORD, etc.). All PROCEDURES are declared 
immediately after the data declarations and be- 
fore the first executable statement of the main 
program. Parameters are passed by reference, 
not by value. This allows parameters to be mod- 
ified by the called PROCEDURE. Examples of 
PROCEDURE calls are: 

D0IT(A,B, 100*8) 

SWITCH(CELL[I],CELL[J]) 

READLN 

PROCEDURES may be called recursively, there- 
fore the allocation of storage for local varia- 
bles must take place at execution time rather 
than at compile time. Each PROCEDURE has asso- 



WEST COAST COMPUTER FAIRE 



491 



ciated with it a data segment called an "act- 
ivation record" which contains 1) the return 
address of the caller, 2) a dynamic link poin- 
ter to the activation record of the calling 
PROCEDURE, and a static link pointer to the 
activation record of the PROCEDURE in which 
the called PROCEDURE is declared, and 4) the 
storage for locally declared variables. 

Built-in Functions 

Built-in functions include: 

CHR(n) -returns a character whose 
numerical value in the 
collating sequence is given 
by "n". 

ORD('a') - returns the integer value 
of the ASCII character 'a'. 

GETCH(A) -gets the next character 

from the input stream (prob- 
ably the terminal) and places 
it in character variable "A". 

PUTCH(A) -prints or displays upon the 
standard output device the 
character contained in vari- 
able "A". 

READ(A,B,...) -performs formatted 
input. Character variables 
are filled to their current 
length with the next V 
characters from the input 
stream, and integers are con- 
verted from ASCII to binary 
and placed into their corres- 
ponding INTEGER variables. 

WRITE (a, b,..;) -performs formatted 

output. The Inverse of READ. 

READLN (...) -1 i ke READ but wi 1 1 

position the input stream to 
the first character of the 
next line before returning. 

WRITELN(...) -like. WRITE but termin- 
ates the current line with 
appropriate new line charac- 
ters). 

PUSH(A) -pushes variable "A" onto the 
stack 

POP(A) -removes the top element of the 
stack and places it into "A" 
If no variable is specified it 
simply decrements the stack 
pointer by one. 

STACK(n) -places the value V in the 
stack pointer register. 

Formal Language Definition 

I have chosen to describe the language via 
syntax graphs, rather than the more common BNF 
form. I did this for two reasons, first be- 
cause syntax graphs are easier for humans to 
read and understand, and second because the 
compiler will be written with a technique 
called recursive descent (a top-down or goal- 

BOX 1579, PALO ALTO CA 94302 



directed approach) which can be directly derived 
from the syntax graphs. Most PASCAL compilers 
use this technique. There are superior compiler 
construction schemes, my own favorite is called 
SLR(k), a table driven technique, but given the 
design criteria the recursive descent method 
was the best choice. 

The graphs are read from left to right, and 
generally, from top to bottom. The arrows show 
the flow of the parser. Symbols enclosed in 
circles or oblongs correspond to terminal sym- 
bols, i.e. variables, reserved words, operators, 
constants. Symbols enclosed in boxes or rec- 
tangles correspond to a recognizer for that par- 
ticular non-terminal, i.e. a CASE statement in 
its entirety, a BLOCK, etc. Such recognizers 
are implemented as PROCEDURES to recognize the 
desired construct. Where the arrows branch 
either path may be taken, thus in the example 
which follows, an "Integer Declaration" consists 
of the reserved word "INTEGER" followed by an 
identifier name, optionally followed by a left 
bracket, optionally followed by a comma, another 
identifier name, etc. 



Integer Declaration 



O 



'kt KNu^c^H TVJ 



Example Program 



/* find the smallest & largest number in 
a given list */ 

CONST N=10; 

INTEGER I,X,Z,MIN,MAX,A[10]; 

/* assume that array A has been 
initialized with the values 
12, -6, 98, 7, 47, -1, -50, 
0, -72, 33 */ 

BEGIN 
MIN:=A[1]; MAX:=MIN; I:=2; 
LOOP 
X:=A[I]; Z:=A[++I]; 
IF X>Z THEN IF X>MAX THEN MAX:=X END; 
IF Z<MIN THEN MIN:=Z END 
ELSE IF Z>MAX THEN MAX:=Z END; 
IF X<MIN THEN MIN:=X END 
END; 

++I; 

WHEN I>N EXIT 
END 

WRITELNC Max. value is ' ,MAX) ; 
WRITELN(' Min. value is ' ,MIN) 
END. 



K> 




HG 



^ 



<^> 



-^YyO— CwwgER j — (T) — . 

-^ 



-G 



idiot —y-(D — ("p*" } — (D - ^ 



'-O — 



:— > -(rM_^J-rC)- ( — ' H TV-i 



^ 



T^^^l 



i-o- 



V ( BEGIN ) STATtWHIS ( tap ) > 



( ( J \RGLIST f ) J * 




WEST COAST COMPUTER FAIRE 



492 



BOX 1579, PALO ALTO CA 94302 



— /iF J 1 CONDITION 1—1 THEN J 



STATEMENTS 



<" 



^ ( ELSIF J CONDITION Q THEN J— STATEMENTS 



EMENTS ^ 



^> ( ELSE J 



STATEMENTS 



( LOOP ) 



STATEMENTS 



1 



CONDITION t-(DO 



STATEMENTS — — 1 EXIT 



STATEMENTS 



^ ( END ) ^ 



CONDITION 



EXPRESSION 



EXPRESSION 




EXPRESSION 



_ f INTEGER \ 



~T 




* >.. 



T~ 



^-T ' V-f characters J ( ' J ^ 



^ 



J ^~\ # J~\ HEX CONSTANT j ' 



EXPRESSION 



-<y 



BUILT-IN 
FUNCTION 



{<) TERM \L/ 



STATEMENTS 




EXPRESSION 




S 1 




--> 



f STATEMENT ^ 



o 



ARGLIST 



T 



EXPRESSION 



O 



PARMLIST 



~T~~ IDENT 



O 



> 



WEST COAST COMPUTER FA1RE 



493 



BOX 1579, PALO ALTO CA 94302 



AN INTRODUCTION TO PROGRAMMING IN PASCAL 

Chip Weems 
Graduate Teaching Assistant 
Department of Computer Science 
Oregon State University 
Corvallis, Oregon 97331 



Abstract: 



This paper will concent 
on the use of the Pascal la 
the beginner's level. A mi 
ledge of some other program 
uage such as FORTRAN, BASIC 
is assumed. 

The areas which will be 
simple and structured state 
Pascal, simple and structur 
types, plus procedures and 
Emphasis will be placed on 
statements, although some d 
the power of user defined d 
will also be included. 

A list of machine model 
implementations of Pascal a 
exist, is provided as an ap 



Part One: What is Pascal? 
Historical Introduction: 



rate heavily 
nguage at 
nimal know- 
ming lang- 
or ALGOL 

covered are 
ments in 
ed data 
functions, 
using Pascal 
iscussion of 
ata types 

s for which 
re known to 
pendix. 



Pascal is not an acror.ym, unlike 
many languages the letters which make 
up its name do not stand for anything. 
This is perhaps a first indication that 
Pascal is something different and a 
little special. 

Pascal was named after the famous 
mathematician Blaise Pascal (1623 - 
1662) who, among other things, invented 
an eight digit calculating machine 
which could perform addition and sub- 
traction. Multiplication and division 
were performed by repeated addition or 
subtraction, respectively. He com- 
pleted the first operating model at the 
age of 19, and built 50 more during the 
next 10 years. 

The Pascal language was originally 
specified in 1968 by Niklaus Wirth at 
the Institut fur Informatik, Zurich. 
This makes it a relative newcomer to 
world of programming languages. The 
first Pascal compiler became operation- 
al in 1970 and was published in 1971. 

The following table shows just how 
new Pascal really is. Remember that 



most compilers are not introduced 
until three to five years after their 
initial specification. (For example, 
APL was initially spacified in 1962.) 



Language 

FORTRAN 

COBOL 

ALGOL 

LISP 

SN0B0L 

BASIC 

PL/1 

APL 

Pascal 



Introduction Date 

1957 
1960 
1960 
1961 
1962 
1965 
1965 
1967 
1971 



After two years of experience, the 
language was revised and re-released 
in 1973. This version of the language 
is now generally referred to as stan- 
dard Pascal. The important thing to 
note here is that Pascal was the first 
major new language to be developed 
after the concept of structured pro- 
gramming was introduced. 

Structured Programming and Pascal : 

There exists no exact definition 
of structured programming, although it 
has been termed "A collection of all 
good and wonderful programming prac- 
tices." One fact becomes obvious in 
discussing it with groups of program- 
mers: Some people love it, and some 
people hate it. However, those who 
hate structured programming are now 
finding themselves more often in the 
minority. 

Some features to be found in a 
structured program are that it is gen- 
erally more readable and more easily 
shown to be correct. The design of a 
structured program usually involves 
stepwise refinement, or top-down pro- 
gramming. Languages designed with 



WEST COAST COMPUTER FAIRE 



494 



BOX 1579, PALO ALTO CA 94302 



structured programming in mind will 
usually include a large group of pro- 
gram-flow control structures, which are 
entered at only one point and from 
which there is only one exit. Another 
notable point about such languages is 
that they often require explicit defi- 
nition of all variables and data struc- 
tures in the code. What does all of 
this mean? How does it relate to 
Pascal? 

Readability ; 



One of the outstanding features of 
Pascal is that well written Pascal code 
is very readable; more so than most 
other programming languages. Probably 
the greatest single factor which makes 
this language so easy to follow, is the 
construction of data names. In Pascal 
there is no limit to the acceptable 
length of names. Generally, the com- 
piler only uses the first eight charac- 
ters of a name to distinguish it from 
all others, with the remainder of the 
name simply being ignored. This lack 
of constraints usually leads to very 
meaningful names in Pascal. Note that 
I have specifically avoided writing 
'variable names'. Pascal permits not 
only variables to be named, but also 
constants, files, records, complex data 
structures, procedures and functions; 
all with the same naming conventions in 
effect. Compare this to ather lang- 
uages such as BASIC or FORTRAN! 

Pascal's readability is also en- 
hanced by the wording of its state- 
ments. When meaningful names are used, 
almost always the coded statements will 
make sense as english phrases. This 
would almost seem to take the place of 
program comments, but even so, Pascal 
provides one of the most flexible com- 
menting schemes possible. Comments may 
appear anywhere in a Pascal program 
except in the middle of words! 

Stepwise Refinement : 



In writing a Pascal program it be- 
comes very easy to use top-down pro- 
gramming style. This is mainly due to 
the flexibility and ease of writing 
procedures and functions. . It is not 
unusual to see incredibly complex 
Pascal programs, several hundred lines 
long, in which the main program ac- 
counts for less than one hundred lines. 
Such a main program will usually con- 
sist of the overall program flow-logic 
with dozens of calls to well-named pro- 
cedures and functions. 



WEST COAST COMPUTER FAIRE 



495 



Procedures and functions correspond 
roughly to subroutines and functions 
in FORTRAN, but are actually part of 
the Pascal program. This means that 
procedures and functions inherit all 
variables defined in the main program, 
similar to subroutines in BASIC, but 
they can also include declarations of 
variables and constants which are only 
valid within themselves. 

It should also be noted that pro- 
cedures and functions are fully re- 
cursive in Pascal, that is they may in 
turn call themselves. 

Simply using the name of a pro- 
cedure or function will invoke it; 
thus it becomes very easy to write 
code with procedure names and worry 
about all of the messy details at a 
later date. This is, of course, the 
basis of top-down programming. 

Explicit Definitions : 

Another level of stepwise refine- 
ment is careful pre-planning of a pro- 
gram. Usually, Rascal programs are 
most easily planned-out by using a 
form of loose, english-like pidgin 
ALGOL. 

One thing should be noted here: 
Pascal is probably best classified as 
a descendant of ALGOL. People who 
know ALGOL seldom have any difficulty 
in learning Pascal. In fact, ALGOL-60 
is generally considered to be a subset 
of Pascal. 

Careful pre-planning is encouraged 
by the fact that Pascal has very rigid 
rules requiring virtually all data 
structures to be defined at the start 
of a program. Unlike many languages, 
you can't just throw in an extra var- 
iable, in the code, when you discover 
that you need it. Because Pascal also 
requires such things to be defined, 
careless pre-planning often becomes 
quite self-evident just by looking at 
the declarations. This feature is 
something which BASIC programmers typ- 
ically have a hard time getting used 
to, but it often makes Assembly Lang- 
uage hackers feel right at home. 

Probably the greatest single new 
idea to come out of Pascal is the user 
defineable data type. This construct, 
which appears in the declarations, per- 
mits the programmer to specify new 
types of data beyond the standard Real, 
Integer, Character and Boolean types. 
Data types of arbitrary complexity may 
be constructed; in fact adding complex 
numbers to a Pascal program is gener- 
ally considered to be a trivial case! 



BOX 1579, PALO ALTO CA 94302 



Users may define data types as outra- 
geously complex as say, a five dimen- 
sional array of records of arrays, sca- 
lars, records with variant parts, 
pointers and complex numbers. The 
programming power added by this concept 
is almost difficult to imagine; it 
provides us with the ability to create 
structured data as well as structured 
processes . 

Single-Entry / Single-Exit Control 



Structures : 



One of the reguisites for being 
able to show that a program will work 
correctly is that it must be possible 
to trace out all of the possible exe- 
cution paths, through the program, for 
given sets of inputs. Usually, this 
is done by first breaking the program 
down into small units, showing that 
each unit works correctly, and then 
showing that combinations of units 
work correctly and so on. 

This all sounds very simple, 
except for one item -- the GOTO state- 
ment throws a monkey wrench into the 
whole thing. The problem is that it 
doesn't take too many GOTO's combined 
with conditional branches, before an 
almost infinite number of possible 
execution paths appear in a program. 
How can you prove that a block of code 
will perform correctly, when you can't 
even be sure where it will be entered 
from, or where control will exit to, 
once it has completed? 

As an example, consider a section 
of a BASIC program, possibly a scoring 
routine for a game, which is invoked 
by GOTO's from 20 different locations. 
In addition, these GOTO statements 
jump into the scoring routine code at 
six different points, depending on 
flags set by previous passes through 
the routine, and upon other outside 
event-s. Depending on the data present 
and the entry point, the routine may 
branch to several places in itself, 
loop in two places, or fall straight 
through. Also, when it completes, 
depending on outside conditions and 
also upon previous passes through it, 
the routine may branch to any one of 
eight other program sections. Stop 
and think about how much effort it 
would take to trace all possible paths 
through such a mess! This code might 
be clever and efficient, but is it 
worth all of the headaches which it 
ill cause in the long run 7 



Not only is such convoluted logic 
difficult to follow and understand, 
but it is also a major chore to get 
all of the bugs out of it; and you can 
never be sure that all of them ARE out. 
As if that isn't enough, just try to 
make a major change to such a piece of 
code -- it would probably be easier to 
discard the whole thing, rather than 
try to patch it. 

Now that we've raked the GOTO 
statement over the coals, what is there 
which will take its place? The answer 
is: single-entry / single-exit control 
structures. Flow of control, in a pro- 
gram, always enters the top of such a 
structure, and will only exit out 
through the bottom. This means that, 
if the program unit inside of the 
structure is correct, we can trace an 
effective straight line through the 
whole thing. A familiar example of 
a single-entry / single-exit structure 
is the FOR-NEXT loop in BASIC, but 
without any GOTO's which enter or 
or leave the middle: Flow will enter 
at the top, looping will occur, but 
eventually flow will continue through 
the bottom of the FOR-NEXT. 

As it turns out, there are only 
three structures required to replace 
the GOTO statement. They are: The 
WHILE statement, the IF-THEN statement, 
and Compound statements. In Pascal, 
anyplace a statement can go, may be 
placed a Compound statement. Compound 
statements consist of the word BEGIN, 
followed by any group of statements 
{Which may include mare Compound state- 
ments.), followed by the word END. 
Pascal also includes WHILE and IF-THEN 
statements, plus several other single- 
entry / single-exit structures which 
add to the convenience of GOTO-less 
programming . 

The following is a list of all of 
the structured statements in Pascal 
along with flowchart segments to in- 
dicate how they function: 

This is, of course, the well known 
IF-THEN statement: 




WEST COAST COMPUTER FAIRE 



496 



BOX 1579, PALO ALTO CA 94302 



A convenient form of the IF-THEN 
statement is the IF-THEN-ELSE : 




The WHILE statement has the form 



FALSE 




This next one is the REPEAT-UNTIL 
statement. There is an important 
difference between this and the WHILE 
statement which should be noted: If 
the condition is false, when a WHILE 
statement is entered, no action takes 
place -- control skips around the ANY 
STATEMENT part. In a REPEAT-UNTIL 
however, the ANY STATEMENT part always 
gets executed at least once, regardless 
of the conditional part. 



REPEAT ANY 
STATEMENTS 



FALSE 




TRUE 



The FOR-UPTO statement is very 
similar to the FOR-NEXT statement in 
BASIC, except that it is restricted to 
an increment of 1. This is intended to 
add to the reliability of the construct, 



since most digital computers can not 
exactly represent fractional numbers. 
If other increments were permitted, it 
might be possible for the increment to 
not exactly match the terminator when 
it reached the desired value, and so 
perhaps the loop would continue for an 
extra pass. This is a very frustrating 
problem, because it is usually highly 
machine dependent, and will typically 
only show up in a very few specific 
instances. All of this is eliminated 
by Pascal's restriction of the incre- 
ment value to 1. One positive side 
effect which results from this is that 
the speed of the statement is often 
greatly increased, since many machines 
have single instructions for incre- 
menting and testing memory locations, 
or registers. 

The FOR-DOWNTO statement is iden- 
tical to this, except that the index 
is decremented by one, each time 
through the loop: 



INDEX:= 
INITIAL VALUE 




TRUE 



FALSE 



ANY 
STATEMENT 



INDEX:=INDEX+1 



This last one is the CASE state- 
ment, which is somewhat like the ON- 
GOTO statement in BASIC: 




LABEL LIST 1 
LABEL LIST 2 



ANY L 
,TATEMENTl 



ANY 
STATEMENT 



-» 



T . 

J ANY 

LABEL LIST n » STATEMENT 



WEST COAST COMPUTER FAIRE 



497 



BOX 1579, PALO ALTO CA 94302 



All of this should not be taken to have them, curly brackets{ } are used 
[imply that Pascal is a GOTO-less lang- instead, 
uage; it does have labels and GOTO's. 

The important point is that the exper- Operations : 
ienced Pascal programmer will almost Integer operations 

never use them, since they are never 
needed and only rarely of any value. * Multiplication 

DIV Division (Integer part only, 
remainder discarded.) 
Part Two: A summary of Pascal state- + Addition 

ments, with examples. - Subtraction 

MOD Modulo (A MOD B = 
Character Set : A-((A DIV B)*B)) 



The standard Pascal character set Real operations 
includes: Letters A - Z (and depending 

on the implementation, a - z), numbers * Multiplication 

0-9, special characters +-*/=< / Division 

>()[].,;:' T (and the space or + Addition 

blank character). - Subtraction 

Names : Boolean operations 



Names in Pascal consist of letters 

and/or digits, and may be any number of AND Logical AND 

characters in length. The first char- OR Logical OR 

acter must be a letter, and the first 8 NOT Logical NOT 
characters must be different than the 

first 8 characters of any other name. Relational Operations (give boolean 

results) 

Examples: 

x L 6 s s thsn 

ENDOFDATA TYPES AVERAGE SN7473A > Greater than 

TOTAL SCORES PAYRATE CARDCOUNT = Equal to 

< = Less than or equal to 

Numbers : > = Greater than or equal to 



Numbers in Pascal are either real <) Not equal to 

or integer. They may be signed or IN Used with data type SET, to 

unsigned. determine membership of an 

Integers are a string of digits. element 

"Examples': Examples: 

+7 43 365 -18 8388607 4092 A * B A times B 

X DIV Y X divided by Y 

Reals have three forms: TOP <= BOTTOM Numerical comparison 

ABOVE AND BEYOND True if both (ABOVE 

digits. digits and BEYOND) are true 

digits. digitsEscale factor boolean variables. 

digitsEscale factor 



Functions : 



The E notation indicates multipli- 
cation by 10 raised to the scale factor Name Action 
Power. ABS Absolute value 

SQR Square 

Examples: TRUNC Truncate to integer part 

ROUND Rounded-up integer form 

3.1415 6.02E23 9.11E-31 -1E9 SUCC Next highest (Integer or Char) 

PRED Next lowest (Integer or Char) 

Note that the scale factor is always SIN Trigonometric sine 

an integer. COS Trigonometric cosine 

ARCTAN Trigonometric arctangent 

Comments: LN Natural (Base e) logarithm 



Anything typed between the symbols EXP e raised to the power 
(* and *) will be ignored by the com- SQRT Square root 

piier as comments. On systems which ORD Numeric value associated with 

the character 

WEST COAST COMPUTER FAIRE 498 BOX 1579, PALO ALTO CA 94302 



Name Action 

CHR Character associated with the 

numeric value 
ODD True if the integer argument 

is odd 
EOLN True when end-of-line is reached 
EOF True when end-of-file is reached 

Result type for argument of type 



Name 


Integer 
Integer 


Real 
Real 




Character 


ABS 




SQR 


Integer 


Real 






TRUNC 




Integ 


er 




ROUND 




Integ 


er 




SUCC 


Integer 






Character 


PRED 


Integer 






Character 


SIN 


Real 


Real 






COS 


Real 


Real 






ARCTAN 


Real 


Real 






LN 


Real 


Real 






EXP 


Real 


Real 






SQRT 


Real 


Real 






ORD 








Integer 


CHR 


Character 








ODD 


Boolean 








EOLN 


Argument 


is alwa 


ys a file name, 



result is always boolean. 
EOF Argument is always a file name, 
result is always boolean. 

Statements: 

Program Heading : 

PROGRAM programname (filename, 
filename, . . . ) ; 

Exmaple: 

PROGRAM TESTSCORES ( INPUT, OUTPUT) ; 



Constant Definition: 



constname 



CONST constname = value 
= value; . . . 

Example: 



CONST ENDOFDATA = -1.0; PI=3. 141592; 
MAXSCORE = 100; MINSCORE = 0; 

Note that the constant definitions 
can continue onto more than one card, 
but the CONST is only typed once. 

There are some predefined values 
which do not need to be declared as 
constants in Pascal programs. These 
are: 

TRUE Boolean true value 

FALSE Boolean false value 

MAXINT Largest integer the computer 

can work with 
NIL Null pointer 



Variable Definition : 

VAR varname, varname, . . . : type ; 

varname, varname ,...: type ;.. . 

Example : 

VAR SCORE, MAX, MIN, TOTAL: INTEGER; 
RADIUS, DIAMETER, CIRCUMFERENCE: 
REAL; 
FOUND, DONE, FLAG, OK: BOOLEAN; 

Note that the declarations may 
continue on several lines, but only 
one VAR is required. 

Procedure Definition : 

PROCEDURE procname (value 

parameters; VAR variable 

parameters) ; 
body of procedure 

Example: 

PROCEDURE INCREMENTBY ( INCREMENT : REAL ; 

VAR VARIABLETOBEINCREMENTED:REAL) ; 
BEGIN 

VARIABLETOBEINCREMENTED := 
VARIABLETOBEINCREMENTED + 
INCREMENT 
END; 

Function Definition : 

FUNCTION functnan, (value 

parameters): result-type; 
body of function 

Example: 

FUNCTION RADIUS (CIRCUMFERENCE :REAL) : 

REAL; 
CONST TWOPI = 6.2831 ; 
BEGIN 

RADIUS: =CIRCUMFERENCE/ TWOPI 
END; 

Assignment Statements : 

varname := expression 

Examples : 

WEEKSPAY := PAYRATE * H0URSW0RKED; 

V0LTS:=AMPS*0HMS; 

C0NEV0LUME:= (PI*SQR( RADIUS )*HEIGHT) 

/3.0; 
ARRAYLOCATION : =ARRAYL0CATI0N + 1; 

Note that the assignment statement 
is very free-form: Spaces may be 
inserted as needed, the assignment may 
continue onto more than one line, etc. 
The only restriction is that words 
can not be broken in the middle. 



WEST COAST COMPUTER FAIRE 



499 



BOX 1579, PALO ALTO CA 94302 



The Compound Statement : 

In Pascal, any place where a state- 
ment can be used, a compound statement 
may also be used. A compound statement 
is formed by the word BEGIN, a group of 
any statements, followed by the word 
END. 

Examples : 

BEGIN 

SCORESUM:=SCORESUM+SCORE; 

SC0REC0UNT:=SC0REC0UNT+1 
END 

BEGIN 

X:=(Y+Z)/100; 
BEGIN 

T:=(Q/75)+15; 
Fz=N-18 
END 
END 

Placement of Semicolons: 



The simplest rule for the place- 
ment of semicolons, in a Pascal pro- 
gram, is: Place'a semicolon between 
any two Pascal statements. 

Note: BEGIN and END are not Pascal 
statements, they are simply delimiters. 
A compound statement is a statement, and 
must be separated from other statements. 
Also note one exception in the rule -- 
The ELSE in the IF-THEN-ELSE takes the 
place of a semicolon in separating the 
two statements. 

Conditional Statements: 

The IF-THEN Statement: 



IF expression THEN statement 

Example : 

IF MAXSCORE < SCORE THEN MAXSC0RE:= 
SCORE 

The IF-THEN-ELSE Statement: 



IF expression THEN statement ELSE 
statement 

Example : 

IF TIME < THEN TIME:=0 ELSE TIME:=1 

The CASE statement: 



CASE expression OF 

case-label-list: statement; 
case-label-list: statement; 



case-label-list: statement 



END 



Example: (* Determine command group 
from a command number *) 

CASE COMMANDNUMBER OF 






1 


,3 


GROUP 


= 1; 




2 


,4 


GROUP 


= 2; 


5 


9 


11 


GROUP 


= 3; 


6 


7 


8 


GROUP 


= 4; 






10 


GROUP 


-b 



END 

Repetitive Statements: 

The WHILE-DO Statement : 

WHILE expression DO statement 

Example : 

WHILE NOT EOF(INPUT) DO 
BEGIN 

READ(SCORE) ; 

SC0RESUM:=SC0RESUM+SC0RE; 

SC0REC0UNT:= SCORE COUNT +1 
END 

The REPEAT-UNTIL Statement : 

REPEAT group -of -statements UNTIL 
expression 

Example : 

REPEAT 

X:=X-1; 

Y:=Y+1 
UNTIL (X < 0) OR (Y > 0) 

The FOR Statement : (Two forms.) 

FOR control -variable := initial- 
value TO final-value DO statement 

FOR control-variable := initial- 
value D0WNT0 final-value DO statement 

Examples : 

FOR INDEX := 1 TO ARRAYfOP DO 

ARRAY[INDEXJ := . . 
FOR INDEX := 100 DOWNTO ARRAYBOTTOM 

DO IF ARRAY[INDEX] < THEN 
ARRAY[INDEX]:= 

Transfer of Control Statements: 



d repetitive 
described are 
uctures to 
omputation . 
labels and 
Pascal, they 
11 often only 
ogram logic, 
ended thaf the 
iiose rare ex- 
actually have 



The con 


ditional 


an 


statements 


previousl 


y 


sufficient 


control s 


tr 


perform any 


required 


c 


Remember th 


at althou 


qh 


GOTO's are 


provided 


in 


are unnecessary and 


wi 


create conf 


usion in 


pr 


Therefore i 


t is recomm 


be avoided 


except in 


t 


treme cases 


where th 


ey 


some value. 







WEST COAST COMPUTER FAIRE 



500 



BOX 1579, PALO ALTO CA 94302 



Label Definition: 



The label definition is placed 
after the CONST declarations in the 
program = 

LABEL integer, integer, ...; 

Example : 

LABEL 10, 20, 25, 100, 9999; 

GOTO Statement: 



GOTO label 

Example: 

GOTO 9999 

Input and Output in Pascal: 

Pascal I/O statements are not 
really statements, but are actually 
calls to predefined procedures. None 
the less, they are often referred to as 
statements. 

Input Procedures : 

READ(variable-list) 

READLN( variable-list) 

READ(f ilename, variable-list) 

READLN(f ilename, variable-list) 

Examples: 

READ(X,Y,Z,MAXVAL) 

READLN(HIGHSC0RE,L0WSC0RE,AVGSC0RE) 
READ (WEATHERFILE, TEMP, HUMIDITY, PRESSURE) 
READLN(CUSTOMERF I LE, NAME, NUMBER, BALANCE) 



The 
clared 

The 
READLN 
ments w 
values 
going t 
on the 
A READL 
any add 
record, 
begin r 



file 
in th 

diff 
is th 
ill c 
from 
o a n 
curre 
N, on 
ition 

and 
eadin 



name 
e pr 
eren 
at s 
onti 
the 
ew r 
nt o 
the 
al v 
go t 
g va 



mus 
ogra 
ce b 
ucce 
nue 
same 
ecor 
ne h 

oth 
alue 
o th 
lues 



t have been de- 
m heading, 
etween READ and 
ssive READ state- 
to input successive 

record, only 
d when all values 
ave been exhausted, 
er hand, will skip 
s on the current 
e next record to 



Example : 

Two records: 



0.0 1 .0 2.0 



3.0 4.0 5.0 



READ(A,B) 
READ(C,D) 



WEST COAST COMPUTER FAIRE 



The result of this would be A=0.0, 
B=1.0, C=2.0, D=3.0. 

READLN(A.B); 
READLN(C,D) 

Would result in A=0.0, B=1.0, C=3.0, 
D=4.0. 

Output Procedures : 

WRITE(expression-list) 
WRITELN(expression-list) 
WRITE(f ilename, expression-list) 
WRITELN( filename, expression-list) 

Examples : 

WRITE(A,B,C) 

WRITELN(X*Y/Z,MAX,SQRT(Q), •*****•) 
WR I TE(NEWF I LE, NAME, ADDRESS, PHONE, 

AMT+1.0) 
WRITELN(PL0TFILE,XC00RD,YC00RD,PENP0S, 

MARK) 

Successive WRITE statements cause 
the values to be written, all as one 
record. Each time a WRITELN is exe- 
cuted, however, a new record is output, 

Examples : 

WRITE( »A' ,*B'); 
WRITECC 1 , 'D' ) 

Would output ABCD. 
WRITELN( 'A* , 'B'); 
WRITELNCC, 'D') 

Would output AB 
CD. 

Formatting numeric output is very 
easy in Pascal. Each expression in a 
WRITE or WRITELN can actually have one 
of the following three forms: 

expression 

expression:width-expression 
expression:width-expressi on :fr action- 
width-expression 



Th 

which 

expres 

charac 

>e ou 

^sn ' 

ex 
lr the 
area , 
accomm 

Th 
if ies 
to the 
a real 



e exp 
is to 
sion 
ter p 
tput . 
t req 
tras 

numb 
the a 
odate 
e f ra 
how m 
righ 
numb 



ressi 

be o 

gives 

ositi 

If 
uire 
will 
er is 
rea s 

the 
ction 
any d 
t of 
er. 



on gives th 
utput. The 

the miniaiu 
ons to be i 
the express 
all of the 
be filled w 

too big to 
ize is expa 
number, 
-width-expr 
igits will 
the decimal 



e value 

width- 
m number of 
ncluded in 
ion value 
positions, 
ith blanks. 

fit in the 
nded to 

ession spec- 
be printed 
point for 



501 



BOX 1579, PALO ALTO CA 94302 



Examples : 

Ar100, B=1.5, C=137875.3217, 
D=128. 34152 

WRITE(A:5,B:5,C:5,D:9:3) would output 

100 1.5137875.3217 128.341 

WRITE(A:3,B:5:2,C:9:1) would output 

100 1.50 137875.3 



Carriage Contro 



Al 
piemen 
system 
acter 
printi 
acter 
each o 

In 
a carr 
either 
hardwa 
Simula 
system 

Th 
carria 
used i 



thou 
tati 
s wi 
of e 
ng d 
must 
utpu 

rea 
iage 

dir 
re o 
ted 
, in 
e f o 
ge c 
n Pa 



gh th 
on de 
11 de 
ach r 
evice 

be p 
t lin 
lity, 

cont 
ectly 
f the 
by th 

soft 
llowi 
ontro 
seal: 



1: 

is i 
pend 
stro 
ecor 
. T 
rovi 
e, u 
thi 
rol 
imp 
pri 
e mo 
ware 
ng a 
1 co 



s ma 
ent , 
y th 
d ou 
hus, 
ded 
sual 
s ch 
comm 
leme 
nter 
nito 



chine 
most 
e fir 
tput 

an e 
at th 
ly a 
aract 
and , 
nted 
, or 
r or 



re the st 
mmand cha 



and im- 

Pascal 
st char- 
to a 

xtra char- 
e start of 
space, 
er acts as 
which is 
in the 
which is 
operating 

andard 
racters 



Character 

Space 
(Zero) 
1 



Action 
Normal, single spacing 
Double space, skip 1 line 
Page eject 



Depending upon how the carriage 
control is implemented, using other 
characters may have different effects, 
which may, or may not be desireable. 

Data Types: 

All data type definitions are 
placed between the CONST and VAR 
declarations at the start of the 
program. 

Scalar Types : 

TYPE typename = (identifier, 
identifier, . . . ) ; 

Example: 



Examples : 

TYPE LETTER = A..Z; 

TYPE WINTERTERM = JAN.. MAR; 

VAR SC0RE:0. .100; 

Array Types : 

TYPE typename = ARRAY[index-type] 
OF element-type; 

VAR varname-list : ARRAY[index- 
type] OF element-type; 

Examples : 

TYPE COEFFICIENTS = ARRAY[0..4] OF REAL; 
VAR SAMPLELIST = ARRAY [0 .. 1 00] OF REAL; 

Note: INTEGER and REAL are not 
permitted as index types. 

Multidimensional arrays are defined 
by specifying multiple index-types. 

TYPE typename = ARRAY[index-type, 
index-type,...] OF element-type; 

VAR varname-list : ARRAY[index- 
type, index-type, ... ] OF element-type; 

Examples : 

TYPE SIMLINEQS = ARRAY[0. . 5 ,0. . 6] OF 

REAL; 
VAR FOURSPACE : ARRAY[0. . 10 ,0. . 10, 

0. .10,0. .10] OF INTEGER; 
VAR NAMELIST : ARRAY[ 1 . . 1 00 , 1 . . 30] OF 

CHAR; 



Packed arrays are a Imps, 
to normal arrays, except th 
laring an array to be packe 
be possible to reduce the s 
memory space used by it. T 
of reduction depends upon t 
and the implementation, and 
fact be nil. This may also 
running speed of the progra 

TYPE typename = PACKED 
[index-type-list] OF elemen 

VAR varname-list = PACK 
[index-type-list] OF elemen 

Example: 



t identical 
at by dec- 
d, it may 
ize of the 
he amount 
he machine 

may in 

reduce the 
m. 

ARRAY 
t-type ; 
ED ARRAY 
t-type ; 



VAR FOURSPACE : PACKED ARRAY[0..10, 

0. .10,0. .10,0. .10] OF INTEGER; 



TYPE MONTH = (JAN, FEB, MAR , APR, MAY , JUN, Elements in arrays are referenced 

JUL, AUG, SEP, OCT, NOV, DEC) ; by placing the index expression(s) 

between square brackets associated 

Subrange Types : with the array name. 

TYPE typename = constant .. constant ; array-name[index-expression-list ] 
VAR varname-list : constant .. con- 
stant; Examples: 



WEST COAST COMPUTER FAIRE 



A[1,5] F0URSPACE[X,Y,Z,T] LIST[N+1] 
502 BOX 1 579, PALO ALTO CA 94302 



Record Types ; 

TYPE typename = RECORD field-list 
END; 

VAR varname-list= RECORD field- 
list END; 

Examples 

TYPE COMPLEX = RECORD REAL , IMAGINARY : 

REAL END; 
TYPE CUSTOMER ='RECORD 

NAME,STREET:ARRAY[1. .30] OF 

CHAR: 
CITY:ARRAY[1..20] OF CHAR; 
STATE:ARRAY[1. .2] OF CHAR; 
ZIP: 0. .99999 
END; 

In addition to fixed format rec- 
ords, a case construct can be added to 
the record description to permit var- 
iable structure. 



Example : 

TYPE 

THIRTYC 

CHAR 

EMPLOYE 

TWENTYC 

CHAR 

TWOCHAR 

EMPLOYM 

NAME 

ADDR 

S 

C 

S 

Z 

END; 

SEX: 

SOCS 

CASE 



HARS=PACKED ARRAY[1..30] OF 

R= ( GOVT, PRIV, SELF, OTHE); 
HARS=PACKED ARRAY[1..20j OF 

S=PACKED ARRAY[1..2] OF CHAR; 

ENT=RECORD 

:THIRTYCHARS; 

ESS:RECORD 



TREET 
ITY 
TATE 
IP 



THIRTYCHARS; 
TWENTYCHARS; 
TWOCHARS; 
0. .99999 



(MALE, FEMALE); 
ECiINTEGER; 

TIMEEMPLOYED : EMPLOYER OF 
GOVT:(YEARS :INTEGER; 

BRANCH:TWENTYCHARS); 
PRIV:(YEARS :INTEGER); 
SELF:( ); 

OTHE: (DESCRIPTION: THIRTYCHARS) 
END; (^EMPLOYMENT*) 

There are two different ways to refer- 
ence fields in records. The first is a 
format for writing the variable name, 
the other is a statement which selects 
a particular group of records and 
allows reference to fields directly, 
within the confines of the statement. 

recordname. fieldname 

Examples : 

EMPL.NAME CUST.ZIP EMPL .ADDRESS. STATE 



Th 
progra 
it spe 
gramme 
within 
statem 
a comp 
all of 
restri 

WI 



e WI 
m to 
cif i 
r to 

tho 
ent 
ound 

the 
cted 
TH r 



TH statement restricts the 
only those records which 

es. This permits the pro- 
directly reference fields 

se records. Typically, this 

is used in conjunction with 
statement which performs 
desired functions on the 
record set. 

ecordname-list DO statement 



Example: 



WITH EMPL, COMP DO BEGIN 



NAME; 
ADDRESS; 
REAL; 
IMAGINARY 



END 



Set Types : 

TYPE typename = SET OF base-type; 
VAR varname-list = SET OF base-type; 

Examples: 

TYPE LETTER = SET OF 'A'.^Z'; 

VAR DIGITS : SET OF 0. .9; 

VAR SIZE : SET OF (SMALL , MEDIUM, LARGE) ; 

Note that the base-type must be a 
scalar or subrange type. 

Set Operations: 
+ Union 
* Intersection 

Difference 
= Set equality 
< ) Set inequality 
<= >= Set inclusion 
IN Left operand is a scalar, right 
operand is a set. Evaluates to 
TRUE if the scalar is an element 
of the set. In other words, if 
the scalar is IN the set. 

File Types : 

TYPE filename = FILE OF type; 
VAR varname-list = FILE OF type; 

Examples: 

TYPE DATA = FILE OF INTEGER; 
VAR CUSTFILE : FILE OF CUSTOMER; 

References to files are made through a 
set of predefined procedures which are 
listed below. When a file is declared, 
(All I/O files must also be declared 
in the program heading, as was noted 
earlier.) a buffer with the same name, 
followed by an f symbol is created. 
This buffer variable is like a window 



WEST COAST COMPUTER FAIRE 



503 



BOX 1579. PALO ALTO CA 94302 



on the current position of the file. 

Examples : 

B:= CUSTFILEt 
CUSTFILET := XYZ 

The standard I/O procedures for 
use with files are: 

RESET(f ilename) Returns the file win- 
dow to the beginning 
of the file. 

REWRITE(f ilename) The file is replaced 
by an empty file, the 
window is set to the 
beginning of the file, 
and the file becomes 
writeable. 
Advances the window 
to the next position 
in the file. 
Appends the current 
value of filenamef to 
the file. Will only 
work if the window is 
at end-of-file. 
filenamef becomes 
undefined after a PUT. 
Evaluates to TRUE if 
the window is at end- 
of-file. 



GET(f ilename) 



PUT(filename) 



E0F(f ilename) 



See the section on input and output 
in Pascal for more information on the 
following : 

READ(f ilename, varname-list ) 
WRITE(f ilename, varname-list) 
READLN(f ilename, varname-list) 
WRITELN(f ilename, varname-list) 

Pointer Types ; 

TYPE typename = ftype; 
VAR varname-list : ttype; 

Examples: (A linked list) 

TYPE LINK = fPART 

PART = RECORD 



NEXT:LINK; 



END; 

Pointer variables are only proto- 
typically defined by their definition. 



Actual storage must be allocated for 
them, at run time, by the standard pro- 
cedure NEW(pointer-variable ) . For 
record types with variable field lists, 
NEW(pointer-variable , case-tag, case- 
tag,...) is used, where each case-tag 
specified must be listed in the same 
order as in the record description. 



Conclusions : 

Pascal is a relatively new and 
powerful general purpose programming 
language. It is also one of the first 
languages to employ many of the prin- 
ciples of structured programming. 

As a result of this, programs 
written in Pascal are usually more 
straightforward and considerably more 
readable than those written in most 
other contemporary languages. 

Since its introduction, Pascal 
has seen an amazing rise in popularity 
throughout the world. This fact is 
well evidenced by the number of col- 
leges and universities whose computer 
science departments have switched 
their emphasis from FORTRAN or BASIC 
to Pascal, in the past few years. 
Educators are discovering that Pascal 
is an excellent introductory language, 
since it is not onl^ easy to learn, 
but also teaches good programming 
habits right from the beginning. 

Pascal is certainly not the utopia 
of programming languages — it is far 
from perfect. However, it provides 
a significant improvement, in general 
purpose computing, over most of those 
older languages listed earlier, thus 
it would seem to be the next logical 
rung on an endless ladder reaching 
towards a perfect language. 



References : 

Jensen, Kathleen and Wirth, Niklaus 
Pascal User Manual and Report New 
York: Springer-Verlag , 1974. 

Schneider, G. Michael; Weingart, Steven 
W. and Perlman, David M. An Intro- 
duction to Programming and Problem 
Solving with Pascal New York: John 
Wiley & Sons, 1977. 

Ralston, Anthony (ed.) and Meek, 
Chester L. (asst. ed.) Encyclopedia of 
Computer Science New York: Petroceili 
/Charter, 1976. 



WEST COAST COMPUTER FAIRE 



504 



BOX 1579, PALO ALTO CA 94302 



Mickel, Andy (ed.) Pascal News #9/10 
Minneapolis, MN: Pascal User's Group, 
1977. 

Conway, Richard; Gries, David and 
Zimmerman E.C. A Primer on Pascal 
Cambridge, Mass.: Winthrop, 1976. 

Bowles, Kenneth L. Problem Solving 
Using Pascal New York: Springer- 
Verlag, 1977. 



Appendix 1 : 



List of Machines with 
Known Implementations 
of Pascal 



The greatest proliferation of 
Pascal implementations appears to 
have occurred on Burroughs B6700, 
CDC-6000/Cyber series, IBM 360/370 
series and DEC PDP-11 series 
machines. Pascal is available in 
forms which will run on most config- 
urations of these machines. 

The following is a list of 
machines for which an implementation 
of Pascal is known to exist. (*) 
indicates that the implementation 
was still under development at the 
time of this writing. For detailed 
information, see Pascal News #9/10 
September, 1977. 

Amdahl 470 

Burroughs B1700, B3700, B4700, B5700, 

B6700, B7700 
Control Data Corp. Cyber 18 and 2550, 

3200(*), 3300, 3600, 6000 

series, Cyber 70 series, 

Cyber 170 series, Omega 480, 

Star 100 
CII IRIS 50, IRIS 80, 10070 
Computer Automation LSI-2 
Cray-1 

Data General Eclipse, Nova 
Digital Equipment Corp. PDP-8 series, 

PDP-10 series, PDP-11 series 
Dietz MINCAL 621 
Foxboro Fox-1 
Fujitsu FAC0M 230 
Harris/4 
Hewlett-Packard HP-21MX, HP-2100, 

HP-3000(*) 
Hitachi Hitac 8800/8700 
Honeywell H316, 6000 

IBM Series 1(*), 360/370 series, 1130 
ICL 1900 MK2, 2970, 2980 
Intel Intellec 8080A 
Interdata 7/16, 7/32, 8/32 
Itel AS/4, AS/5 
Kardios Duo 70 



Mitsubishi MELC0M 7700 

MITS Altair 680b 

M0S Technology 6502 (*) 

Motorola 6800 (*) 

Nanodata QM-1 

NCR Century 200 (*) 

Norsk Data N0RD-10 

Prime P-400 

Sems T1600 

Siemens 330, 4004, 7000 

Solar 16/05/40/65 

Telefunken TR-440 

Terak 8510A 

Texas Instruments ASC, 9900/4 

Univac 90/30(*), 90/70, 1100 

Varian V-70 

Xerox Sigma 6, Sigma 7, Sigma 9 

Zilog Z-80 (*) 



Appendix 2: Pascal User's Group 

The Pascal User's Group is in its 
third year, and already boasts a world 
wide membership with branch offices 
in Europe and Australia. The Group 
is based at the University of 
Minnesota, under the direction of Andy 
Mickel. The main function of the 
User's Group is to promote the use of 
Pascal, by providing an open forum for 
members, in the form of the quarterly 
published Pascal News . The content of 
Pascal News is determined by the motto 
"All the news that fits, we print." 

Membership/subscription dues are 
$4.00 per academic year. To join, or 
get more information (Your letters may 
or may not be answered -- these people 
are extremely busy. If you just want 
information, it's best to just join, 
and then send in a letter for public- 
ation. ) write to : 

Pascal User's Group, c/o Andy Mickel 
University Computer Center: 227 EX 
208 SE Union Street 
University of Minnesota 
Minneapolis, MN 55455 USA 

If you are joining, you should 
send alomg $4.00, your name, address, 
phone number, type(s) of computers 
you are using (Especially if you have 
a Pascal implementation on any of 
them), and be sure to date your letter. 

Better yet, if you know someone 
who already gets Pascal News, just copy 
the All Purpose Coupon from one of the 
issues, and send that in. 



WEST COAST COMPUTER FAIRE 



505 



BOX 1579, PALO ALTO CA 94302 



TheKeyed-Up IheWtaideiguss 



• :• 




Plug G. Morrow's integrated 
CPU/console into your S-100/ 
IMSAI bus . . . and you've got the 
key to easy programming and 
de-bugging. Octal keyboard and 
digital LEDs monitor or alter 
any CPU register, memory loca- 
tion or I/O device . . . while you 
run in single-step or pro- 
grammable Slow-Step.™ 
Complete kit, just $250 
(Cal. res. add tax). Write 
for specs. 



II Q 123 45 




Have your local com- JL XI. 1X1.1^.61^ 

puter store order it for you. ITL n ™ 1201 10th St., 
Or place BAC/MC orders to J.IJV V> Berkeley, CA 

415-527-7548 . * 94710 



End noise and 
cross-talk with 
our exclusive 
Noiseguard 
system 



Build your S-100 system 
on the WiinderBuss™ 20- 
slot bus-board with Noise- 
guard™ and you'll get 
"textbook clean "signals. 

The Noiseguard™ sys- 
tem's interlaced ground 
system shields all bus lines 
from cross-talk . . . and low- 
power active termination 
absorbs noise and signal 
reflections. 

The printed circuit 
board is double-sided and 
(of course) has a solder 
mask. And there's 3 un- 

Order it at your 
Or phone BAC/MC 




committed positions for 
peripheral power. 

The incomparable Wiin- 
derBuss™, by Morrow's 
Micro-Stuff, is now avail- 
able for $76 alone. With 10 
edge connectors, $120. 
With 20 edge connectors 
$154. Add $4 handling. 

Thinker 

rri ^,™ 1201 10th. St, 
lOVS Berkeley, CA 
^I 1 ^ 94710 

local computer shop, 
orders to (415) 527-7548. 




~" ""tHands On 
EHperience 

FRANK R. MYERS 

4674 DELORES AVENUE 
OAKLAND, CALIFORNIA 94602 

415 531-6609 



SPECIALIZING IN 



MICROCOMPUTER SYSTEM 
CONSULTATION & SERVICE 



cnft 



COMPUTER SERVICES 



MARTIN ROWLEY 



HEX - OCTAL - DECIMAL - BINARY 
CONVERSION CHARTS 

4 - COLOR WALL SIZE CHARTS (2' X *»') 

4 BASES ON EACH CHART 
2 ORIENTATIONS TO CHOOSE FROM 

OCTAL HEX 

Enter with octal Enter with hex 

CONVERT TO HEX CONVERT TO OCTAL 

DECIMAL OR BINARY DECIMAL OR BINARY 

Scan either chart for decimal to hex/octal/binary 
each chart covers - 255 "(one byte) 

Regular $6 . 00 each 

Special faire price both for $8.00 

To order send check or money order to: 

ZETA SYSTEMS CANADA LTD. 

2547 Heather Street 
Vancouver, B.C. V5Z 3J2 

Charts will be sent first class, in a four (4) ply 
mailing tube. 



iiu 7 EnniLC flSc 

The magazine that puts 
microcomputing in your hands. 





The Computer Magazine 
You Can Read! 



You don't have to be a programmer 
or computer scientist to jead Personal 
Computing. It's the magazine that tells 
you how to get started in computing. 
How to have fun. And how to use the 
computer for your own personal and 
business applications. 

Each month Personal Computing is 
loaded with practical, fun articles de- 
signed to help you get the most out of 
your computer. We're the magazine 
with style, color and practicality. Top- 
ics covered in recent issues include: 
Getting Into Computer Games, Using 
the Computer to Manage a Drug Store, 
Using Computers in Schools, Learning 
to Program in Three Easy Lessons, Ten 
Easy Steps to Become a Computer 
Hobbyist, How to Set Up a Word Proc- 
essing System, The Future of Robots, 
A Computer That Speaks English, In- 
telligent Video Games, How to Profit 
from Your Computer Hobby, and 
much, much more. 



r 



Open your eyes, put on your 
thinking cap and subscribe to 
PERSONAL COMPUTING ! 



PCS 



NAME 



ADDRESS. 
CITY 



STATE. 



ZIP. 



USA 

Dl year (12 issues) $14 

□ 2 years (24 issues) $26 
D 3 years (36 issues) $38 

Charge my: 

□ Master Charge 

□ Bank Americard 
Account # 



Card expiration date 

D Bill me 

□ Check enclosed (you'll receive 
one extra issue for each year!) 
Please allow two months for 
processing. 



ADDITIONAL POSTAGE (per year) 

CANADA 4 MEXICO $4.00 surface 
$8.00 air 

OTHER FOREIGN $8.00 surface 

$36.00 air 

{Please remit in US funds - Thank you) 

BACK ISSUES $3.00/COPY 
(Payment must accompany order.) 

Mail to: 

PERSONAL COMPUTING 
1050 Commonwealth Ave. 
Boston, MA 0221 5 




Sol-20. First it was the small computer. 

NOW, it's THE SMALL COMPUTER SYSTEM. 



A year ago, we introduced the 
Sol-20. It wasn't the first small computer. 
It was the first complete small computer 
with everything needed to get it up and 
on the air as it came from the factory. 
The keyboard, interfaces, extra memr y, 
factory backup, and service notes were 
all there. 

The results are hi: Sol-20 is now 
the number one small computer in the 
world. Sols aren't the cheapest, just 
the most valuable. 

We originally designed the Sol-20 
as the heart of a complete computer 
system. So now to solve the problems 
of science, engineering, education, 
business management and control and 
manufacturing, we offer fixed price 
Sol systems in either kit or fully tested 
and assembled form. We offer language 
flexibility, Extended BASIC, Assem- 
bler, PILOT* and FORTRAN* We 



offer Helios II/PTDOS, an extraor- 
dinarily capable disk operating system. 
And remember, though we call these 
small or personal computer systems, 
they have more power per dollar than 
anything ever offered. They provide per- 
formance fully comparable and often 
superior to mini-computer systems cost- 
ing tens of thousands of dollars more. 

What you get. What it costs. 

Typical systems include Sol 
System I priced at 51600 in kit form, 
$2095 fully assembled and tested. In- 
cluded are a Sol-20/8 with SOLOS 
personality module storing essential 
system software, an 8192 word memory, 
a 12" TV/video monitor, and a cassette 
recorder with BASIC tape. 

Sol System II has the same equip- 
ment with a larger capacity 16,384 word 
memory. It sells for S1825 in kit form: 
$2250 fully assembled. 



For even more demanding tasks, 
Sol System III features Sol -20/ 16 with 
SOLOS, 32.768 words of memory, the 
video monitor and the dual drive Helios 
II Disk Memory System with the PTDOS 
disk operating system and Extended 
DISK BASIC Diskette. Price, $5795 
fully assembled and tested. 

More information. 

For the most recent literature and 
a demonstration, see your dealer listed 
below. Or if more convenient, contact 
us directly. Please address Processor 
Technology Corporation, Box 0, 7100 
Johnson Industrial Drive, Pleasanton, 
CA 94566. Phone (415) 829-2600. 

*Available soon. 

Pvocessorlechnology 



^JtT!*^, 25 , 894 " 11291 Phoenix ( 602 ) 94 2-7300;Tucson(602)327-4579. CA: Berkeley (41 5)845-6366; Costa Mesa (71 4)646-0221 ■ Fresno f 209)266-9566- HavwarH 
(415)537-29^; Lawndale (213)3^^ 

San Jose (408)377-4685, (408)226-8383; San Rafael (415)457-9311; Santa Clara (408)249-4221- Sunnyvale (4OT)^ ^ Ta™ 213 34^ <£?q vln LS 
786-7411 ; Walnut Creek (415)933-6252; Westminster (714)894-9131 CO: Boulder $3)449-8233; EnTewJo^ 
Miami (306)2W-fesj; Tamoa (813)879-4301. GA: Atlanta (404)455-0647. IL: Champaign («?5aI8S?fiS 
Blooming on (812)334-3807; Indianapolis (317)842-2983, £317)251-3139. IA: Davenport (319 386-3330. KYLoulsv^f^ 
Royal Oak (313)576-0900; Troy (313)362-0022. MN: Minneapolis (612)927-5601. NJ: Hoboken Sl)420-1644 I sen n (201)283 

(516)732-4446, New York City (21 2)686-7923: White Plains (914)949-3282. NC: Raleigh (919)781^3. OH Columbus 614 ^7761 SySn (5^29^ 124J OR 
Beaverton (503)644-2686; Eugene (503)484-1040; Portland (503)223-3496. Rl: Warwick (401)738-4477 SO Columbia (803)771-7824 tn £nni™* Tr^o^oPJ?" 
7^^^ 9 i^ 81 „ 7)469 - 1502; H ° USt0n ( 713 >526-3456, (713)772-5257; Lubbock W)797-14e* Richardson°214)2l ?oS VA ^McLean (703^21 slslSSln 
K£!"f£? X': 9 ?£ B ^i Ch ^WO-IB??. WA: Bellevue (206)746-0651; Seattle (206)524-4101. Wl Mi lwaukee(41 4)259$? f!o WASHInIton DC 
(203)362-2127. CANADA: Ottawa (613)236-7767; Toronto (416)484-9708, (416)482-8080, (416)598-0262; Vancouver S5J 736-7474 7604)43^3282 



um$m$a&n 









MM — i bum mat 

i£| ESI tiSXI 2S2 



QUI 

MR IH MR BSE 



| 8700 PrOCCSSOT: 65(BMPU. Wear free "ActiveKeyboanT. 
Micro-Diagnostic® Extensive documentation. Fully Socketed. 

PieblKJ MonitOT: Relative address calculator, 

Pointer High-low, User Subroutines. Back-step key. 
| Cassette Interface: Load & Dump by file *. Tape motion 
control, Positive indication of operation. 

Applications systems from $90 (Wunit quantity) 
Development systems from $149 (single unit) 



TO OUR AUDIO PRODUCTS. 4 
SYNTHESIZERS... OUR GNOME 
THE ORIGINAL MICRO-SYNTHESIZER, 
TO MODULAR SYSTEMS AND SPECIAL 
EFFECTS DEVICES. 




KITS 

CERTAINLY NOT 
"ME TOO" 
PRODUCTS! 



FROM THE 8700 & TVT-6 
THROUGH 
EXPERIMENTERS KITS BOOKS, 
TAPES AND SOFTWARE 

EACH IS UNIQUE IN DESIGN, 
COST EFFECTIVENESS AND 
VERSATILITY. 



«*J 



Jb- 



■■ 4K^jg«*<ttNN»r 






■ r — I. .— - ■"Ss*3^ 






& 



COMPUTER AIDED SYNTHESIS 
new real-time performance capabilities 

For the Musician/Composer 



I Don Lancaster's ingenius design provides 
software controllable options including: 

• Scrolling • Full performance cursor 

• Over 2K on-screen characters with only 
3MHz bandwidth 

• Variety of line/character formats including 
16/32, 16/64 ....even 32/64 

• User selectable line lengths 



COMPUTER MUSIC that sounds not Just 

gOOd but great! rwtheComputer-orknfted 

Hobbyist/Professional 

EXPANDABLE PACKAGES 
MODULAR -TO SUIT YOUR CUSTOMIZING NEEDS 



SEND FOR OUR FREE CATALOG 

OR 

SEE FOR YOURSELF AT BOOTH 1 s 
410 & 412 

TELL WE MORE! 

{ ) SEND FREE CATALOG 

Name: ., ,.„ 



Address:. 



State: 



, ZIP: 



ELECTROmCSMMC. Ci * 

DEFT. F-C, 1020 W.WILSHffiEBUD., OKLAHOMA CITY, OK 73116 




ll//*. . 



Since 1972 we've been a place where 
people and computers get together. 



Do you know anyone who wants to learn how computers 
work? Or how to program? Without masses of technical 
jargon? Then send them to People's Computers] We're a 
bimonthly magazine devoted to demystifying computers. 
Our pages aren't padded with ads— they're packed with 
articles, tutorials, interviews, listings, games, reviews 
and letters. People's Computers covers: 
Computerese - basic principles about how computers 

work; tutorials on how to program. 
Education - ready-to-use programs; tips on how to write 

computer-assisted educational materials; reports on 

educational uses of computers. 
Blue Sky - Tiny BASIC and Tiny PILOT were born in our 

pages; there's now talk of robots and . . . 
People & Computers - examination of the growing impact 

of computers on our lives and society. 
Fun & Fantasy - computer games; whimsical odds and 

ends; and our swashbuckling hero— FORTRAN Man! 



Some Comments about People's Computers: 

"One of the first, if not the first, of the people-oriented 
computer publications ... At $8 a year, it is a good 
bargain. You'll like it." Kilobaud 

"The editorial flavor is . . . intended to be readable and 
enjoyable for the neophyte. Our resident non-computer 
people at Byte grabbed the first issue so quickly that it 
became difficult to find a copy . . . Should be sampled 
to be believed." Byte 

"People's Computers has been plugging away for years as a 
force for good in the community". Personal Computing 

"For the novice as well as the experienced computer 
user ... an informal style, many useful annotations 
... a sounding board for novel ideas." Computer Notes 

"Here's a first rate magazine for people who want to know 
about minicomputers and microcomputers . . . Power- 
ful, low-cost technology is taking off - keep up with it 
by reading People 's Computers" . The Workbook 



people's computers 

Please start my one-year subscription (six issues) to People's Computers and bill me for just $8. 



NAME 



ADDRESS 



.ZIP. 



CITY /STATE 

Outside the U.S., add $4 for surface postage. Airmail rates on request. 



Unconditional Guarantee: If you ever wish to discontinue 
your subscription for any reason, we will refund the 
complete amount for the remainder of your subscription. 

□ Visa Card Number 



□ Mastercharge Expiration Date 



Send this form or a facsimile to: People's Computers, Dept 57, 1263 El Camino Real, Box E, Menlo Park CA 94025 



ISBN 0-930418-01-X